Lazarus 使用 Free Pascal 的编译器,支持 Object Pascal 语言,与 Delphi 高度兼容,并看做后者的自由软件替代品。

Lazarus 下载与安装

我们先去 Lazarus 官网下载 http://www.lazarus-ide.org/ Windows (64 Bits) 版本的安装程序,我用的电脑是Win10 64位,下载后开始安装即可,安装界面如下:

一路 Next 即可安装完毕,安装完在桌面上就有了 Lazarus 图标,一个豹子的图标。

双击 Lazarus 图标后,先出来 Lazarus IDE Configure 窗口,如下图:

保持默认设置即可,直接点右下角的 Start IDE 按钮,启动 IDE。

Hello world

界面是不是很熟悉呀,Delphi 7的感觉又回来了。下面我们试着写写 Hello world 吧。

1、在 Form1 窗口上放置一个 TButton 按钮

2、双击 Button1 按钮,在 TFrom1.Button1Click 事件中添加如下代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Hello world');
end;

3、按 F9 键,开始运行,点击 Button1 按钮后弹出 Hello world 对话框。

通过以上示例,我们对 Lazarus IDE 有了初步的熟悉,和 Delphi 保持高度的兼容,快捷键呀,界面呀,很容易上手。

A Text File Converter 示例

下面我们参考 Marco Cantù 《Essential Pascal》第四版中第 131 页,编写一个  A Text File Converter(文本转化控制台程序),程序功能是通过参数-U –R –C 来实现将文本文件转化为大写,句子首字母大写等。

1、在 Lazarus 菜单中选择 【File –> New…】

2、在弹出的 New… 对话框选择 【Project – Console application】,创建一个控制台程序。

3、弹出 New console application 对话框,我们只创建最简单的控制台程序,直接点 Cancel 按钮关闭就行。

4、这样我就得到了最简单的控制台程序 project1.dpr 代码如下:

5、点击 【File – Save All】,将程序保存,文件结构如下:

6、在 project1.lpr 中添加如下代码:

program project1;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Convert
{ you can add units after this };
var
I: Integer;
Flag: char;
inputFile, outputFile: string; begin
// command line processing
for I := 1 to ParamCount do
begin
if ParamStr(i) [1] = '-' then Flag := ParamStr(i) [2]
else
if inputFile = '' then
inputFile := ParamStr(i)
else
outputFile := ParamStr(i);
end; // check we have the two files and a flag
if (inputFile = '') or (outputFile = '') or
not (Flag in ['U', 'R', 'C']) then
begin
writeln ('Missing or wrong parameters');
readln;
Exit;
end; // process the files
DoConvert (inputFile, outputFile, Flag); readln;
end.

7、新建一个 Unit 文件,并保存为 Convert.pas 文件,其中代码如下:

unit Convert;

{$mode objfpc}{$H+}

interface

procedure DoConvert (const inputfile, outputfile: string; flag: Char);
procedure ConvUpper;
procedure ConvCapitalize;
procedure ConvSymbols; implementation uses
SysUtils; var
FileIn, FileOut: TextFile;
FileLength: LongInt; procedure DoConvert (const inputfile, outputfile: string;
flag: Char);
var
F: file of Byte;
begin
// compute the input file length
AssignFile (F, inputfile);
Reset (F);
FileLength := FileSize (F);
CloseFile (F); // open the text files
AssignFile (FileIn, inputfile);
Reset (FileIn); AssignFile (FileOut, outputfile);
Rewrite (FileOut); // conversion...}
// check the input flag
case Flag of
'U': ConvUpper;
'C': ConvCapitalize;
'R': ConvSymbols;
end; // close the files
CloseFile (FileOut);
CloseFile (FileIn);
end; procedure ConvUpper;
var
Ch: Char;
Position: LongInt;
begin
Position := 0;
while not Eof (FileIn) do
begin
Read (FileIn, Ch);
Ch := UpCase (Ch);
Write (FileOut, Ch);
Inc (Position);
end;
end; function LowCase (C: Char): Char;
begin
if C in ['A'..'Z'] then
LowCase := Chr (Ord (C) - Ord ('A') + Ord ('a'))
else
LowCase := C;
end; procedure ConvCapitalize;
var
Ch: Char;
Period: Boolean;
Position: LongInt;
begin
Period := True;
Position := 0;
while not Eof (FileIn) do
begin
Read (FileIn, Ch);
case Ch of
'A'..'Z':
if Period then
begin
Write (FileOut, Ch);
Period := False;
end
else
begin
Ch := LowCase (Ch);
Write (FileOut, Ch);
Period := False;
end;
'a'..'z':
if Period then
begin
Ch := UpCase (ch);
Write (FileOut, Ch);
Period := False;
end
else
begin
Write (FileOut, Ch);
Period := False;
end;
'.', '?', '!':
begin
Period := True;
Write (FileOut, Ch);
end;
else
Write (FileOut, Ch);
end; // case
Inc (Position);
end; // while
end; procedure ConvSymbols;
var
Ch: Char;
Position: LongInt;
begin
Position := 0;
while not Eof (FileIn) do
begin
Read (FileIn, Ch);
if Ch < Chr (127) then
Write (FileOut, Ch);
Inc (Position);
end;
end;
end.

8、按 Ctrl + F9 编译通过,在 Run 菜单下选择 Build File,生成 project1.exe 文件,最终目录如下:

9、在 project1.exe 目录下我们新建一个 input.txt 文件和 output.txt 文件,其中 input.txt 文件内容下:

10、在 cmd 窗口中输入下面的命令,用到 –U 参数,将文本转化为大写

11、回车执行命令后,打开 output.txt 我们发现,文本已经是大写了。

12、我们继续测试 –C 参数,目的是将每个句子首字母变成大写。

13、回车执行后,打开 output.txt 文本中每个句子首字母已经是大写字母了。

以上代码在 Lazarus IDE v1.8.0 中测试通过,示例代码请下载

LazarusATextFileConverter.rar

Lazarus 初识的更多相关文章

  1. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  2. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  3. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  4. 初识IOS,Label控件的应用。

    初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...

  5. UI篇(初识君面)

    我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. 初识SpringMvc

    初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...

  8. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  9. Redis初识、设计思想与一些学习资源推荐

    一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...

随机推荐

  1. php通过CURL模拟post提交请求

    <?php header("Content-type:text/html;charset=utf-8"); class Test{ public function reque ...

  2. P1135 奇怪的电梯 dp

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第ii层楼(1 \le i \le N)(1≤i≤N)上有一个数字K_i(0 \le K_i \le N)K ...

  3. day41 mycql 函数

    一些经典的练习题,以及函数的简单用法,內建函数 -- 函数 python函数 def fun1(a1,a2,a3): sum = a1+a2+a3 return sum fun1(1,2,3) jav ...

  4. Debian 9 中设置网络

    一.对于有线网络,如果默认没有安装图形界面,进入了 multi-user.target中时,是没有使用NetworkManager管理网络的,此时需要手动配置才能上网 首先得到网卡名称:ip addr ...

  5. Linux上的文件查找工具之locate与find

    前言 Linux上提供了两款工具用于查找文件,一款是locate,另一款是find. locate的特点是根据已生成的数据库查找,速度较快,但是查找的是快照数据,不准确. 因此在日常使用中,为了准确性 ...

  6. NOIP考纲总结+NOIP考前经验谈

    首先来一张图,很直观(截止到2012年数据) 下面是收集的一些,我改了一下 红色加粗表示特别重要,必须掌握 绿色加粗表示最好掌握,可能性不是很大,但是某些可以提高程序效率 高精度 a.加法 b.减法 ...

  7. 阿里云EDAS在本地CentOS7.5 系统搭建测试环境,部署配置中心以及部署多个war包

    参考阿里云的EDAS开发文档: 使用 Ali-Tomcat 开发应用 我们自己在内网搭建CentOS7 的测试环境,需要的资源如下: Ali-Tomcat Pandora 容器 EDAS 配置中心安装 ...

  8. 老毛桃UEFI版u盘启动盘

    使用老毛桃制作UEFI启动盘 下载UEFI版本启动盘制作工具,打开官方网站http://www.laomaotao.org,当前显示页面右下下载UEFI版本.文章写作时最新版本为9.3. 使用教程见: ...

  9. DOM操作技术

    1.动态script function loadScript(url) { var script = document.createElement("script"); scrip ...

  10. yii2 数据库和ActiveRecord

    Yii2数据库和 ActiveRecord 类 1.在 common/config/main-local.php 里面配置数据账号和密码. 2.ActiveRecord(活动记录,简称AR类),提供了 ...