在MAC安装Lazarus & 起点 - 我们的第一个Lazarus程序!

安装Lazarus

首先到Lazarus官网,找到合适的版本下载页面,比如Mac的版本:

https://sourceforge.net/projects/lazarus/files/Lazarus%20macOS%20x86-64/Lazarus%203.4/

将三个文件都下载到本地,需要安装这三个文件:

| fpc-src-3.2.2-20210709-macosx.dmg | 2024-05-26 | 50.5 MB | 70 |
| fpc-3.2.2.intelarm64-macosx.dmg | 2024-05-26 | 274.2 MB | 75 |

Lazarus-3.4-macosx-x86_64.pkg 2024-05-26 278.1 MB 155

下载后双击安装,如果因为安全原因不允许安装,那么按住shift之后双击进行安装。

启动后,就进入了Lazarus的IDE主界面。

下面开始我们的第一个Lazarus程序!

Lazarus Tutorial/zh CN - Lazarus wiki

起点 - 你的第一个Lazarus程序!

启动后的界面

启动后,桌面上将出现很多窗口:顶部是主菜单,左面是对象观察器,Lazarus源代码编辑器将占据大部分的桌面,而一个预置的Form1窗体将覆盖在源代码编辑器的上面。

如果是中文系统的话,那么默认将是中文界面。如果使用GTK库的话,注意使用GTK2,因为GTK1对中文的支持不好。

创建按钮

在顶部的主菜单上,菜单分隔线的下面有一排标签。如果Standard标签还未被选中,单击选中它。然后找到TButton图标(一个有OK字样的矩形),单击Tbutton图标,然后在Form1窗体上找个宽敞的地方单击一下。一个有着"Button1"标题的矩形按钮就出现了。重复一次,你将获得"Button2"按钮,建议你把它放到Button1的右面。

现在单击Button1选中它,左侧的对象观察器上将出现Button1对象的所有属性。找到名为Caption的属性(你可以在"收藏夹"标签下更方便地找到它),现在这个属性的值是"Button1"。单击显示着"Button1"的方格,把里面"Button1"文本改成"Press",当你按下Enter(或者单击别的方格)后,你会看见Form1窗体上的Button1按钮上的文本变成了"Press"。然后找到对象观察器上的"事件"标签,你会看见可以给Button1关联很多事件(Event),包括OnClick,OnEnter,OnExit等等。选择OnClick右边的空白方格,将出现一个显示"..."(三个点,也就是省略号)的小方格,在这个方格上单击,你将自动跳转到源代码编辑器,同时你的光标会处于一段过程(procedure)代码中:在其中输入:

复制代码
Button1.caption := 'Press again';

按下F12选中Form1窗体。(发现MAC下按F12无法选中From1窗体,可以在窗口里选择From1窗体)

然后我们来编辑Button2的属性,将Caption修改为"Exit",然后选择OnClick事件,单击那个显示"..."的小方格,你又回到了源代码编辑器,光标位于另一段过程代码的中间:

复制代码
 procedure TForm1.Button2Click(Sender: TObject);
 begin
   {输入:}
   Close;
 end;

由于中间出现问题,重新新建项目

重新新建项目

按前面的步骤创建按钮

运行程序

现在可以尝试编译这个程序了。最简单的方法是在顶部主菜单中选择"运行",在弹出的子菜单中选择"运行"(你也可以使用快捷键F9,在MAC下是Commond R)。如果一切顺利,你的程序将被编译执行。

所有的编译信息都会出现在底部的"消息"窗口中。最终,一个没有刻度标记(编辑状态下才会出现)的Form1窗口将出现在屏幕上。这是你的应用程序的主窗口,它正等着你去按按钮(以及其他操作)。

尝试下点击Press按钮,你会发现按钮的标签变成了"Press again"。之后你再怎么按,它依然显示"Press again"。

现在点击Exit按钮,窗口将关闭,程序也就终止了(在MAC下按了两次才关闭。。。)。编辑状态下有着丑陋刻度标志的Form1又回到了屏幕上,准备接受更多的修改完善。

现在你应该保存你的工作了(你应该经常这么做!),选择顶部主菜单上的" 工程 > 保存工程 "来保存工程文件。

修改项目

在Form1窗体上选择Press按钮("Button1")。

在"事件"标签中选择OnClick,点击出现的"..."方格,来回到源代码编辑器。

复制代码
 procedure TForm1.Button1Click(Sender: TObject);
{这段代码使用了Button1的Tag属性,使Tag属性在0和1之间转换}
 begin
   if Button1.tag =0 then
   begin
     Button1.caption := 'Press again';
     Button1.tag := 1
   end else
   begin
     Button1.caption := 'Press';
     Button1.tag := 0
   end
 end;

这样按钮1可以来回在Press again和Press之间切换。

调试项目

第三步 常用调试方法

有时候需要一些直接有效的打印出调试内容,比如像VB 下的 Debug.print 可直接在立即窗口中打印出调试内容

可以使用

复制代码
 WriteLn('XXXX ', XXX); 
复制代码
 Write('XXXXXX');   

但是在网上发现不少新人使用会弹出: project project1 raised exception class 'EInOutError' with message:file not open

异常通知

只需要在文件头部加入预编译指令(Mac下不需要加这句)

复制代码
 {$APPTYPE CONSOLE}

这样调试时会弹出一个类dos对话框,输出调试的内容

(这里没有测试成功,没有找到调试输出的内容)

常用技巧

lazaurs的编辑器蛮强大的,支持代码补全,自动完成,模板编辑,多行缩进注释,选定代码后批量更改里面的单词!

1.代码补全

按下键盘的Ctrl+W键!输入变量后按下这个键就OK啦~

MAC下不行。

2.自动完成

自动完成的快捷键大多数都冲突了,解决方法是打开 工具(T)->选项...->编辑器->键盘映射->CodeTools命令->标识符自动完成 上右键 编辑 ,然后根据实际情况修改吧,我的是再勾选Alt,也就是说,我的热键是Ctrl+Alt+Space!

MAC下是在Lazarus-选项-编辑器-键盘映射-Code Tools-标识符自动完成 上面编辑,默认是Ctrl+Space

3.模板编辑

这个也蛮简单,按下键盘的Ctrl+J,然后输入class,回车!是不是很酷!

Mac下是"代码模版"?

4.多行缩进注释

缩进的:向左 -> Ctrl+U

向右 -> Ctrl+I(选中多行代码更爽)

多行注释:Ctrl+/

5.选定代码后批量更改里面的单词

先选中几行代码(需要修改的代码段),然后点击编辑器左边显示行号左边的那支笔。

这个时候你可以输入b,变量a就全部改为b,还可以按下tab跳到下一个单词。

6.编辑器的高亮

复制代码
<?xml version="1.0"?>
<CONFIG>
 <EditorOptions Version="9">
   <Display DoNotWarnForFont="Ubuntu Mono" EditorFont="Ubuntu Mono" EditorFontSize="13">
     <MarkupCurrentWord NoKeyword="False"/>
   </Display>
   <KeyMapping>
     <default Count="1">
       <Version Value="6"/>
       <Item1 Name="Identifier completion">
         <KeyA Default="False" Key1="32" Shift1="5"/>
       </Item1>
     </default>
   </KeyMapping>
   <CodeTools CodeTemplateFileName="/home/lht/.lazarus/lazarus.dci" CompletionLongLineHintTypeCompletionLongLineHintType="sclpExtendRightOnly" AutoDelayInMSec="104"/>
   <Mouse>
     <Default Version="1"/>
   </Mouse>
   <Color Version="9">
     <LangObjectPascal Version="9">
       <ColorScheme Value="Twilight"/>
       <SchemeTwilight>
         <Space Background="1973790" FrameColor="5000268" FrameStyle="slsDotted" FrameEdges="sfeBottom"/>
         <Number Foreground="7434751"/>
         <String Foreground="7337839"/>
         <Symbol Foreground="clYellow"/>
         <Comment Foreground="clSkyBlue" Style="fsItalic"/>
         <Assembler Foreground="11715098"/>
         <Directive Foreground="22015"/>
         <Case_label Foreground="16541892"/>
         <IDE_Directive Foreground="1478752"/>
         <Reserved_word Foreground="1023473"/>
       </SchemeTwilight>
     </LangObjectPascal>
     <Globals Version="9">
       <SchemeTwilight>
         <ahaDefault Background="1973790"/>
       </SchemeTwilight>
     </Globals>
     <LangPython Version="9">
       <SchemeTwilight>
         <Float Foreground="8345087"/>
         <Octal Foreground="16755455"/>
         <Number Foreground="8345087"/>
         <String Foreground="8388522"/>
         <Symbol Foreground="clYellow"/>
         <Comment Foreground="clSkyBlue"/>
         <Hexadecimal Foreground="8345087"/>
         <SyntaxError Foreground="16755285"/>
         <Documentation Foreground="16755370"/>
         <Reserved_word Foreground="43775"/>
         <Non_reserved_keyword Foreground="8366847"/>
       </SchemeTwilight>
     </LangPython>
   </Color>
   <Misc PasExtendedKeywordsMode="True"/>
   <General>
     <Editor TabIndent="True" TabWidth="2"/>
   </General>
   <DividerDraw>
     <LangObjectPascal>
       <TypeSect>
         <TopColor Value="9157119"/>
       </TypeSect>
       <TypeGVar>
         <TopColor Value="9157119"/>
       </TypeGVar>
       <TypeGStruct>
         <TopColor Value="9157119"/>
       </TypeGStruct>
       <TypeProc>
         <TopColor Value="9157119"/>
       </TypeProc>
       <TypeLStruct>
         <MaxDepth Value="1"/>
         <TopColor Value="9157119"/>
       </TypeLStruct>
     </LangObjectPascal>
   </DividerDraw>
 </EditorOptions>
</CONFIG>

总结

通过本次实践,对Laraus有了初步了解,可以做一个带按钮的窗体,并在按钮触发代码。

现在存在的问题就是跟踪信息还看不到。另外MAC下窗体布局有点问题。

调试

放置按钮的时候发现按钮位置变动

按钮和鼠标配置不匹配,不明白什么原因,而且后面发现点中按钮2还是现实按钮1的属性,并且无法进入按钮2的事件。总之全乱了。

可以在对象查看器选择按钮1或2。

在按钮Caption里面写的时候报错

每写一个字母,都会弹出一个报错对话框

结合前面那些错误,关闭项目,重新新建项目

在Mac下点击Exit按钮,按了两次才关闭程序

不知道什么原因。好像每个按钮都需要按两次。。。。是不是设定的双击? 大约就是双击,在Mac下。

破案了,是鼠标的问题,用MAC的触摸板就没这个问题了。

小技巧:Laraus里面用大括号来注释

除了用双斜线注释外,还可以用大括号来注释,大括号里可以放多行。

调试时报错expected but "identifier WRITELN" found

编译项目,目标:/Users/skywalk/Documents/project1: 退出代码1,错误: 1

unit1.pas(57,2) Error: Syntax error, ";" expected but "identifier WRITELN" found

前面一句话需要';'加上,问题解决。

Free Pascal里面有些语句后面带分号,有些不带,不太明白。。。。

laraus 调试write没有输出怎么办?

暂时没解决。

相关推荐
endingCode1 小时前
45.坑王驾到第九期:Mac安装typescript后tsc命令无效的问题
javascript·macos·typescript
soulteary3 小时前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
小江村儿的文杰13 小时前
XCode Build时遇到 .entitlements could not be opened 的问题
ide·macos·ue4·xcode
天涯倦客的美丽人生16 小时前
2024年11月最新 Alfred 5 Powerpack (MACOS)下载
macos
SoraLuna16 小时前
「Mac玩转仓颉内测版24」基础篇4 - 浮点类型详解
开发语言·算法·macos·cangjie
总爱写点小BUG17 小时前
VM虚拟机装MAC后无法联网,如何解决?
macos
Cod_Next1 天前
Mac系统下配置 Tomcat 运行环境
java·macos·tomcat
ZVAyIVqt0UFji1 天前
iOS屏幕共享技术实践
macos·ios·objective-c·cocoa
Zhijun.li@Studio1 天前
Mac下的vscode远程ssh免密码登录
vscode·macos·ssh
SoraLuna1 天前
「Mac玩转仓颉内测版25」基础篇5 - 布尔类型详解
开发语言·算法·macos·cangjie