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

news2024/11/14 3:42:47

安装Lazarus

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

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

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

fpc-src-3.2.2-20210709-macosx.dmg2024-05-2650.5 MB

70

fpc-3.2.2.intelarm64-macosx.dmg2024-05-26274.2 MB

75

Lazarus-3.4-macosx-x86_64.pkg2024-05-26278.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没有输出怎么办?  

暂时没解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习(1):使用Python的Dask库实现并行计算

目录 一、Dask介绍 二、使用说明 安装 三、测试 1、单个文件中实现功能 2、运行多个可执行文件 最近在写并行计算相关部分&#xff0c;用到了python的Dask库。 Dask官网&#xff1a;Dask | Scale the Python tools you love 一、Dask介绍 Dask是一个灵活的并行和分布式…

C语言 ——— 学习并使用字符分类函数

目录 学习isupper函数 学习isdigit函数 学习tolower函数 将输入的字符串中把大写字母转换为小写字母并输出 学习isupper函数 参数部分&#xff1a; 形参需要传递的是一个字母&#xff0c;字符在ASCII码表上是以整型存储的&#xff0c;所以实参部分用(int c)没有问题 返回…

HarmonyOS笔记3:从网络数据接口API获取数据

面向HarmonyOS的移动应用一般采用MVVM模式&#xff08;见参考文献【1】&#xff09;&#xff0c;其中&#xff1a; M&#xff08;Model层)&#xff1a;模型层&#xff0c;存储数据和相关逻辑的模型。它表示组件或其他相关业务逻辑之间传输的数据。Model是对原始数据的进一步处理…

享界S9别乱选,定价有大玄机!

文 | AUTO芯球 作者 | 雷慢 享界S9刚上市&#xff0c; 就有人傻钱多、工作忙的老大哥来问我&#xff0c; 两个版本怎么选&#xff1f; 这不巧了吗&#xff0c;论华为车系&#xff0c;我是资深用户&#xff0c; 常开问界M9&#xff0c;试过智界S7&#xff0c;问界M7&#x…

PUA自己到无法自拔,或许是你过度信奉【优绩主义】

本文算是人文社科心理篇的第二期&#xff0c;不时发一些【理性】的【鸡汤】&#xff0c;或许对你认识社会本质有所帮助~ 一.定义 顾名思义&#xff0c;从理科生的角度来说&#xff0c;【优绩主义】以优秀的成绩作为评判人生是否成功的极大型指标&#xff0c;在东亚的【休息羞…

性能优化之自定义指令实现图片懒加载

1&#xff09;图片懒加载 是常见的用于在页面滚动时动态加载图片&#xff0c;而不是在页面加载时一次性加载所有图片。性能优化必备提高页面加载速度的手段&#xff0c;特别是在包含大量图片的网站上。 图片懒加载的原理&#xff0c;其实就是&#xff0c;当图片出现在视口内时…

数据分析:宏基因组的荟萃分析之MMUPHin

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 介绍 批次效应是实验中由于样本处理和测序技术变异引起的非生物学差异&#xff0c;可能干扰研究结果。这种效应难以完全消除&#xff0c;但可通过方法如PCA、PC…

【Vue3】Pinia getters

【Vue3】Pinia getters 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子。本…

求职leetcode题目(6)

1.简化路径 解题思路: 根据题意&#xff0c;使用栈进行模拟即可。 具体的&#xff0c;从前往后处理 path&#xff0c;每次以 item 为单位进行处理&#xff08;有效的文件名&#xff09;&#xff0c;根据 item 为何值进行分情况讨论&#xff1a; item 为有效值 &#xff1a;存…

AQS框架

文章目录 概要AQS概述公平锁与非公平锁原理可重入 概要 假设现在需要写一个SDK层面的锁&#xff0c;应该如何实现呢&#xff1f; 初步的思路如下&#xff1a; 搞一个状态标记&#xff0c;用来表示持有或未持有锁&#xff0c;但得是 volatile 类型的保证线程可见性。编写一个 …

揭秘公司高效查快递的秘密武器

在快节奏的现代商务环境中&#xff0c;物流管理的效率直接关系到企业的运营成本和客户满意度。对于拥有大量快递业务往来的公司而言&#xff0c;如何快速、准确地追踪每一个包裹的物流信息&#xff0c;成为了一项至关重要的任务。今天&#xff0c;我们将揭秘一款公司高效查快递…

智慧农场数字港系统设计与实现

1 项目介绍 1.1 摘要 农业是一个国家的根本之一&#xff0c;也是国家经济、社会发展的重中之重&#xff0c;从“粮食第一”方针到农业生产市场化&#xff0c;再到乡村振兴、加强扶持农业技术创新和基础建设&#xff0c;我国的农业发展以及走过了几个阶段&#xff0c;并一直在…

Nature教你怎么用GPT做学术

ChatGPT如何助力学术写作&#xff1a;三个关键方式 生成性人工智能&#xff08;AI&#xff09;在近年来逐渐成为学术界的热门话题。Dritjon Gruda在2024年4月发表于《Nature》的一篇文章中&#xff0c;详细探讨了ChatGPT如何在学术写作、编辑和同行评审中提供帮助。这篇文章将…

第R2周:Pytorch实现:LSTM-火灾温度预测

nn.LSTM() 函数详解 nn.LSTM 是 PyTorch 中用于创建长短期记忆&#xff08;Long Short-Term Memory&#xff0c;LSTM&#xff09;模型的类。LSTM 是一种循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;的变体&#xff0c;用于处理序列数据&#…

常见的框架漏洞

框架 Web框架(Web framework)或者叫做Web应⽤框架(Web application framework)&#xff0c;是⽤于 进⾏Web开发的⼀套软件架构。⼤多数的Web框架提供了⼀套开发和部署⽹站的⽅式。为Web的 ⾏为提供了⼀套⽀持⽀持的⽅法。使⽤Web框架&#xff0c;很多的业务逻辑外的功能不需要⾃…

微步社区帖子中使用编码数据调戏吃瓜群众初探

什么&#xff0c;居然有人在微步社区公然使用编码后的字符串调戏吃瓜群众。 在演练活动的的某一天&#xff0c;微步威胁情报社区突然流行多重编码后内容的帖子。作者本着为人民群众利益着想的目的&#xff0c;结合毕生所学&#xff0c;决定要将这些奇技淫巧和小把戏公之于众。…

R 语言学习教程,从入门到精通,R 判断语句(7)

1、R 判断语句 判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 下面是大多数编程语言中典型的判断结构的一般形式&#xff1a; R 语言…

嵌入式linux系统中USART应用实现

各位开发者大家好,今天主要给大家分享一下,如何在linux系统中使用UART串口的功能。 第一:串口的作用 UART:通用异步收发器简称串口。常用的调试:移植u-boot、内核时,主要使用串口查看打印信息。也可以外接各种模块。 第二:linux系统中的串口 接下来,我们来看一下,linu…

达梦数据库的系统视图v$mem_heap

达梦数据库的系统视图v$mem_heap 达梦数据库的V$MEM_HEAP视图提供了关于内存堆的信息&#xff0c;仅当系统启动时 MEMORY_LEAK_CHECK 为 1 时有效。这个视图通常包含内存堆的使用情况&#xff0c;包括堆的大小、已使用空间、空闲空间等。通过查询V$MEM_HEAP视图&#xff0c;用…

图书馆座位再利用小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;座位信息管理&#xff0c;座位预订管理&#xff0c;互勉信息管理&#xff0c;意见反馈管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;我的 开发…