Lazarus 使用 Free Pascal 的編譯器,支持 Object Pascal 語言,與 Delphi 高度兼容,並看作後者的自由軟件替代品。api
咱們先去 Lazarus 官網下載 http://www.lazarus-ide.org/ Windows (64 Bits) 版本的安裝程序,我用的電腦是Win10 64位,下載後開始安裝便可,安裝界面以下:app
一路 Next 便可安裝完畢,安裝完在桌面上就有了 Lazarus 圖標,一個豹子的圖標。ide
雙擊 Lazarus 圖標後,先出來 Lazarus IDE Configure 窗口,以下圖:測試
保持默認設置便可,直接點右下角的 Start IDE 按鈕,啓動 IDE。ui
界面是否是很熟悉呀,Delphi 7的感受又回來了。下面咱們試着寫寫 Hello world 吧。this
一、在 Form1 窗口上放置一個 TButton 按鈕spa
二、雙擊 Button1 按鈕,在 TFrom1.Button1Click 事件中添加以下代碼:3d
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Hello world'); end;
三、按 F9 鍵,開始運行,點擊 Button1 按鈕後彈出 Hello world 對話框。code
經過以上示例,咱們對 Lazarus IDE 有了初步的熟悉,和 Delphi 保持高度的兼容,快捷鍵呀,界面呀,很容易上手。orm
下面咱們參考 Marco Cantù 《Essential Pascal》第四版中第 131 頁,編寫一個 A Text File Converter(文本轉化控制檯程序),程序功能是經過參數-U –R –C 來實現將文本文件轉化爲大寫,句子首字母大寫等。
一、在 Lazarus 菜單中選擇 【File –> New…】
二、在彈出的 New… 對話框選擇 【Project – Console application】,建立一個控制檯程序。
三、彈出 New console application 對話框,咱們只建立最簡單的控制檯程序,直接點 Cancel 按鈕關閉就行。
四、這樣我就獲得了最簡單的控制檯程序 project1.dpr 代碼以下:
五、點擊 【File – Save All】,將程序保存,文件結構以下:
六、在 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.
七、新建一個 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.
八、按 Ctrl + F9 編譯經過,在 Run 菜單下選擇 Build File,生成 project1.exe 文件,最終目錄以下:
九、在 project1.exe 目錄下咱們新建一個 input.txt 文件和 output.txt 文件,其中 input.txt 文件內容下:
十、在 cmd 窗口中輸入下面的命令,用到 –U 參數,將文本轉化爲大寫
十一、回車執行命令後,打開 output.txt 咱們發現,文本已是大寫了。
十二、咱們繼續測試 –C 參數,目的是將每一個句子首字母變成大寫。
1三、回車執行後,打開 output.txt 文本中每一個句子首字母已是大寫字母了。
以上代碼在 Lazarus IDE v1.8.0 中測試經過,示例代碼請下載