在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没有输出怎么办?

暂时没解决。

相关推荐
寒水馨17 小时前
macOS下载、安装openclaw-v2026.7.1(附安装包OpenClaw-2026.7.1.dmg)
macos·大模型·github·开源软件·ai助手·openclaw·gpt-5.6
白玉cfc20 小时前
【iOS】MRC和ARC
macos·ios·cocoa
飞雪金灵21 小时前
mac电脑 Maven下载安装和配置环境变量
macos·maven·maven下载安装·mac电脑环境
雨声不在21 小时前
macos 12使用docker
macos·docker·容器
一叶龙洲1 天前
ubuntu26.04 xfce美化成mac
服务器·ubuntu·macos
李小白杂货铺1 天前
Oh My Zsh 简记
macos·macbook·zsh·主题·插件·oh my zsh·omz
fukai77222 天前
macOS防止休眠的菜单栏小工具
macos
web守墓人2 天前
【go语言】gotar:使用go语言复刻tar命令,并加入7z支持,可独立运行在windows、linux、macos上
linux·macos·golang
之歆3 天前
从 Mac 回到 Windows:用 PowerToys + AutoHotkey 找回熟悉手感
windows·macos
星辰即远方3 天前
字符串合法性检验
macos·ios·cocoa