Delphi7.0_预编译指令说明
Delphi7数据库编程学习
② ④
③
⑤
第2章 Delphi 7数据库系统概述
1. Delphi 7 数据库特性
数据访问组件(Data Access Components):主要用于说明数据库的有关信息,如 应用程序要访问(连接)的数据库和要访问数据库中的具体的数据库表,以及要访问表 中的哪些字段等。常用的数据访问组件有TTable、TQuery、TDataSource等。
步骤2:定义 此步骤是建立该部门的模型。主要工作是: (1) 在书面上记载可能出现的数据类型。 (2) 建立原始概念:实体集合、实体属性、属性值、实体联系集合(简称关联集合)。
步骤3:用数据表示实体集合和关联集合 (1) 确定每一个实体类型,并为其分配一个惟一的名字。 (2) 确定每一个定义域,并为其分配一个惟一的名字。 (3) 为每个实体类型确定主键。 (4) 用主键定义域代替每一个实体。求出与实体属性对应的各个关系,并给每个关系确定一个名字。 (5) 求出全部的关联类型,并为其确定一个名字。 (6) 用相应的主键来代替关联类型。
数据控制组件(Data Control Components):主要用于显示浏览数据库中的数据信 息,为用户提供可视化的界面,可以让用户对数据库中的数据信息,进行浏览、编辑、插 入、删除等操作。因而,数据控制组件也被称之为数据浏览组件。数据控制组件既能够把 数据库中的数据显示到窗体中,又能将其自身的经过修改的数据写回到数据库中。常用的 数据控制组件有TDBGrid、TDBEdit、TDBCheckBox等。
例
Memo1.CopyToClipboard;
End;
子
End;
3.5 数据库设计
Delphi开发数据库应用程序的一般步骤
1. 系统设计
delphi7教程总结
delphi7教程总结delphi7教程总结Delphi7.0编程规范第一部分:软件安装与控件安装方法一、软件安装:光盘或网络安装后,将光盘CRACK目录下dent.slip 拷贝到安装路径下。
未注册信息将不再显示。
二、基本安装:1、对于单个控件,Componet-->install component..-->PAS 或DCU文件-->install; 2、对于带*.dpk文件的控件包,File-->Open(下拉列表框中选*.dpk)-->install即可; 3、对于带*.bpl文件的控件包,Install Packages-->Add-->bpl 文件名即可; 4、如果以上Install按钮为失效的话,试试Compile按钮;5、是run time lib则在option下的packages下的runtimepackes加之。
如果编译时提示文件找不到的话,一般是控件的安装目录不在Delphi的Lib目录中,有两种方法可以解决: 1、反安装的源文件拷入到Delphi的Lib目录下;2、或者T ools-->Environment Options中把控件源代码路径加入到Delphi的Lib目录中即可。
注意:所安装的控件是否与你所用的Delphi版本相适应。
三、控件删除:在Component/Install Packages中删除。
选Component/configure Palette…有pages和components两个区域双击components区域,选中要删除得控件,下面有得Delete按钮但系统提供的控件只能Hide,不能delete。
打开控件所在的包文件(*.dpk),从中删除控件那个文件,再重新编译该包即可如果是整个控件包都要删除的话,project->Option->Packages,删掉那个packages 四、详细控件安装1、 Ehlib控件运行Ehlib.v3.4.for.Delphi5678\Ehlib v3.4\Delphi7\DclEhLib70.dpk文件,在弹出窗口中点击Conpile,再点击install,提示安装成功后在Delphi—Tools—Environment Options—Library—Library Path中添加路径Ehlib.v3.4.for.Delphi5678\Ehlib v3.4\Delphi7\2、 Fastreport 控件分别运行fastreport 2.53\source\fr7.dpk,fastreport 2.53\source\ado\ FRADO7.dpk,fastreport 2.53\source\BDE\FRBDE7.dpk,fastreport 2.53\source\DBX\FRDBX7.dpk fastreport2.53\QueryBuilder\Source\dclOQB70.dpk fastreport2.53\QueryBuilder\Source\ADO\dclOQBADO70.dpkfastreport2.53\QueryBuilder\Source\BDE\dclOQBBDE70.dpkfastreport2.53\QueryBuilder\Source\DBX\dclOQBDBX70.dpk,fastreport 2.53\QueryBuilder\Source\IBX\dclOQBIBX70.dpk 文件,在弹出窗口中点击Conpile,再点击install;安装完毕后,在Delphi—Tools—Environment Options—Library—Library Path中添加路径: fastreport 2.53\source fastreport 2.53\source\adofastreport 2.53\source\bdefastreport 2.53\source\dbxfastreport 2.53\source\ibx第 1 页共 22 页fastreport 2.53\QueryBuilder\Sourcefastreport 2.53\QueryBuilder\Source\ado fastreport2.53\QueryBuilder\Source\bde fastreport 2.53\QueryBuilder\Source\dbx fastreport 2.53\QueryBuilder\Source\ibx 3、Raize控件分别运行Raize\RC3\Source\Rz30Ctls_Dsgn70.dpk,Raize\RC3\Source\Rz30DBCtls_Dsgn70.dpk,在弹出窗口中点击Compile,再点击install;安装完毕后,在Delphi—Tools—Environment Options—Library—Library Path中添加路径:Raize\RC3\Source4、VirtualTreeview控件VirtualTreeview4.0.12\VirtualTreeview\Packages\VirtualTrees D7D.dpk文件,在弹出窗口中点击Compile,再点击install;安装完毕后,在Delphi—T ools—Environment Options—Library—Library Path中添加路径:VirtualTreeview4.0.12\VirtualTreeview\Packages 5、xlreport控件分别运行xlreport\xlr4pro123.exe和xlreport\xlr4dfull123.exe,注意安装过程中只保留delphi7和demo两个选项即可,安装完毕后将安装路径下的AfalinaSoft\XL Report 4\Source文件夹的所有文件拷到AfalinaSoft\XL Report 4\d7units中,运行d7XLR4_D.dpk文件;同样将AfalinaSoft\ProOptionPack\Source内的所有文件拷到AfalinaSoft\ProOptionPack\d7units中,运行d7OPack.dpk文件五、第三方控件的下载与安装:用到的第三方控件在了解其用途后,经主任审批后,方可进行安装。
Delphi7实验步骤说明
Delphi 7实验步骤说明1、点击“开始”,选择“程序”→“Borland Delphi 7”→“Delphi 7”,开始启动Delphi 7,如下图所示:2、关闭Delphi 7中的Form1窗体和Unit1.pas单元文件。
注意:不要关闭Delphi 7,如下图所示:3、点击Delphi 7的“文件”→“新建”→“应用程序”,结果如下图所示:4、点击Delphi 7的“运行”,结果如下图所示。
如果没有看到运行界面,说明文件出错,请重新创建应用程序。
5、点击Delphi 7的“文件”→“全部保存”,会出现如下图所示的对话框。
首先保存单元文件,即.pas文件,接着保存工程文件,即.dpr文件。
6、关闭Delphi 7。
7、双击刚才创建的project1.dpr文件,会出现如下界面。
如果你看到报错框,说明文件无法打开,请重建。
8、在Delphi 7的Form1窗体文件中引用控件设计界面,结果如下图所示。
9、我们常用的工具:(1)菜单栏(包括控件、快捷键等)(2)对象树状查看器,它在查看菜单中(查看→对象树状查看器)(3)对象检查器,它在查看菜单中(查看→对象设置)(4)窗体:这是我们引用控件进行用户界面设计的主要工作区之一,它在查看菜单中(查看→窗口列表)。
(5)代码浏览器:这是我们引用控件进行用户界面设计的另一个主要工作区,它在查看菜单中(查看→代码浏览器)。
10、我们常用的控件:(1)Standard标签下的控件,这里面有我们最常用的控件:①“Standard”→“Label”:入库单编号、原材料编号、返库数量、入库方式、入库日期、实收数量、车间名称、备注、查询条件。
②“Standard”→“Edit”:入库单编号的输入框、原材料编号的输入框、返库数量的输入框、实收数量的输入框、车间名称的输入框、按原材料编号查询的输入框。
③“Standard”→“Memo”:备注的输入框④“Standard”→“Button”:新增、提交、取消、修改、保存、第一条、前一条、后一条、末一条、关闭、查询、打印。
Delphi7.0_预编译指令说明
Delphi7.0_预编译指令说明Delphi7.0 预编译指令说明Delphi快速高效的编译器主要来自Object PASCAL的严谨,使用Delphi随时都在与编译器交流,大部分情况下不需要干涉编译器的运行,但是有时也需要对编译器进行必要的设置。
*************************************************************** *******************************A.1 使用编译设置对话框编译器的编译指令是用于指定编译器对项目编译过程的动作和行为。
可以通过[Project]->[Options]->[Complier]选项页进行设置(快捷键:Crtl+Shift+F11),绝大部分的编译环境都可以通过这一对话框进行调整,他包含了对代码、语法、调试信息等的设置。
1.代码设置(Code Generation)Optimization: 是否优化代码。
包括防止变量到CPU寄存器、合并分解表达式、生成中间变量等,其作用域是局部的。
如果{$O+}或{$OPTIMIZATION ON},如下varI: Integer;beginI := 1; //不被编译,也就是说调试的时候,这行没有断点I := 2;end;如果{$O-}或{$OPTIMIZATION OFF},如下varI: Integer;beginI := 1; //被编译,也就是说调试的时候,这行有断点I := 2;end;缺省:{$O+}{$OPTIMIZATION ON}Stack frames: Windows 堆栈帧。
其作用域是局部的,他使编译器成为远端过程和函数生成特定的开头和结尾代码。
这个指令用于Windows 3.0的实模式,对所有Delphi 应用程序他应该是关闭的,一些调试工具需要此类信息。
如果{$W+}{$STACKFRAMES ON},强制每个过程或函数生成堆帧,查找错误时,编译器需要堆帧帮忙。
Delphi7.0资料
Delphi7.0运行时全屏显示轮回显示图片1.0D elphi7.0运行时全屏幕2.0在创建窗体时的OnCreate事件时写入下列代码:BorderStyle := bsNone;WindowState := wsMaximized;或者BorderStyle := bsNone;Left := 0;Top := 0;Width := Screen.Width;Height := Screen.Height;或者BorderStyle:=bsNone;SetBounds(0,0,Screen.Width,Screen.Height);以上三种是全屏幕运行时不出现系统的最小化,最大化,关闭按钮,如果要出现,BorderStyle := bsNone;不写//不要保存上面的东西。
自己在一个Form里加两个按钮分别指向一个事件;加一个OpenDialog,设置一下OpenDialog 的Options ,将ofAllowMultiSelect := True;先执行LoadImage1Click,将一些图片文件。
去试试。
//Delphi7.0 中随机从一个范围中取整数在uses引用math,使用随机函数时的代码如下:randomize;//初始化内置的随机数生成器edit1.Text:=inttostr(randomrange(1000,9999));//randomrange(随机数起始范围,随机数结束范围)也可以不用在uses中引用math直接写下列代码bel1.Caption:=inttostr(random(10));执行后窗体名为form1的label1.caption 随机在0-10内变化;新建一个工程,保存在里面放入一些图片使得该程序运行时能够全屏幕随机选择图片显示添加一个Image1控件,在(Additional)中代码添加如下:procedure TForm1.FormCreate(Sender: TObject);beginBorderStyle := bsNone;WindowState := wsMaximized;end;procedure TForm1.Button1Click(Sender: TObject);beginapplication.Terminate;end;procedure TForm1.Timer1Timer(Sender: TObject);vari:string;begini:=inttostr(random(7))+'.jpg';bel1.Caption:=i;form1.Image1.Picture.LoadFromFile(i);end;end.(以上也是时钟控件的巧用,每隔一定的时间产生一个随机数,随机显示一张图片。
Delphi7主要控件属性
Delphi主要的控件及其属性简介delphi7 常用控件属性列表大全2011-02-26 01:49:21|分类:编程源码| 标签:函数属性编辑器字符串返回|字号大中小订阅按钮类组件button 组件:CAPTION 属性:用于在按钮上显示文本内容Cancel 属性:是否设置成默认的取消按钮,当设置为真的时候(true)按ESC触发改按钮的事件!Default 属性:是否设置成默认的确认按钮,当设置为真的时候按ENTER键的时候触发事件Hint 属性:设置当鼠标在按钮上短暂停留是显示的提示内容。
Showhi nt 属性:是否显示提示内容默认为假!Bitbtn 组件Kind 属性:他的值就是位图按钮组件上所显示的图标!GLYPH 属性:用于在位图按钮上显示加载后的位图图形!Numcl y phs 属性:用于指定位图按钮上所能使用的位图个数!Lay out 属性:用于指定位图在位图组件上的位置!Speedbutton 组件Flat 属性:是否具有OFFICE 2000的风格Groupindex属性:设置分组。
DOWN 属性:设置改按钮是否处于按下状态Allowallup 属性:设置同一组的快速按钮是否具有同时弹起的状态。
Radiobutton 组件Chec k ed 是否处于选中状态Alignment 用于设置选择框和文字的排列方式!Chec k box组件Allowgray ed 用来设置当前组件被选种时,是否为变灰状态!State 设置当前复选框的状态。
文本类组件label 组件Alignment 用来设置标签中的文本在水平方向的排列方式!AUTOSIZE 用来设置标签的尺寸大小,是否随CAPTION属性中文字的字体大小而进行自动调节!Font 用来设置显示文字的字体,颜色!Lay out 用于设置标签中的文本在垂直方向的排列方式!WORDWRAP 用于设置是否自动换行!EDIT组件Charcase 用于设置组件中文字的大小写显示方式!TEXT 用于显示编辑框中的文字内容Modified 用来判断edit组件里的文字内容是否被修改过,若为假,就是没有被修改过!Pass wordc har 设置显示密码字符!memo组件lines 用于访问框中每一行的内容Max length 设置文本框中最大的文字输入量Scrollbar 设置是否需要滚动条Wantretruns 用于设置在框中按’enter’键是否起回车作用Wanttabs 用于设置在框中按’tab’键是否起移位作用。
Delphi7.0 预编译指令说明
Extended Syntax: 扩展语法开关。他能允许或禁止Delphi的扩展语法。对于函数调用和Null结束字符串的使用规定。
缺省:{$X+}{$EXTENDEDSYNTAX ON}
注:向后兼容,已不使用。
Typed @ Operator: 类型化的@运算符检查。应用于局部的变量引用上,控制@运算符返回的指针值类型。@(等价于Addr)是否得到有类型指针
如果{$H+}或{$LONGSTRINGS ON},string类型为AnsiString,长度>255。
如果{$H-}或{$LONGSTRINGS OFF},string类型为ShortString,长度<=255。
缺省:{$H+}{$LONGSTRINGS ON}
Assignable Typed Constants: 可分配类型常量,是否可以修改有类型常量的值。用于向下与Delphi 1.0兼容。
I := 2;
end;
如果{$O-}或{$OPTIMIZATION OFF},如下
var
I: Integer;
begin
I := 1; //被编译,也就是说调试的时候,这行有断点
I := 2;
end;
缺省:{$O+}{$OPTIMIZATION ON}
Stack frames: Windows 堆栈帧。其作用域是局部的,他使编译器成为远端过程和函数生成特定的开头和
结尾代码。这个指令用于Windows 3.0的实模式,对所有Delphi应用程序他应该是关闭的,一些调试工具
需要此类信息。
如果{$W+}{$STACKFRAMES ON},强制每个过程或函数生成堆帧,查找错误时,编译器需要堆帧帮忙。
第5章 Delphi 7基础知识及Delphi 7与数据库
2、窗体设计器 窗体(Forms)窗口是开展大部分设计的工作区域。 3、对象查看器 对象查看器窗口含有两页:Properties页显示窗体中当前被 选择部件的属性信息,并允许改变对象的属性;Events页列 出了当前部件可以响应的事件。 4、代码编辑器 代码编辑器是输入代码的地方。代码窗口一开始处于窗体窗 口之下。因为在Delphi中,设计用户界面直接在窗体中进行, 运行结果和设计样板完全一致。当部件被放到窗体上时,De lphi会自动生成大部分的用户界面代码。 5、对象树状列表(对象监视器) 代码浏览器以一种树状视图的方式显示了列在代码编辑器中 的单元文件。
Edit1.Color:=clRed;
2、顺序结构 顺序结构是程序设计中最简单、最常用的结构。 在该结构中,各程序段按照出现的先后顺序依次 执行,不产生程序流程的其他转移。它是所有程 序的主体结构,即使在选择结构或循环结构中, 也常以顺序结构作为其子结构。
【例5.1】 求一个任意三角形的面积。
(1)界面设计 使用Button、Edit、Label组件和showmessage消息 框即可完成界面设计,用户界面如图所示。
2005 10.0 发布名称:Borland Developer Studio(BDS) 2006。集成C++ Builder; ECO(Enterprise Core Objects)升级到ECO III; 集成Together for Delphi,可以在同一个IDE中进行UML开发;QA Audits和QA Metrics可 以快速的把握专案的设计和代码的质量。 2006 Turbo Borland将BDS 2006拆分成几个独立的版本(Delphi for win32、 Delphi for .net、C#、C++ Builder),而且不能同时安装两个不同的版本。 由于Borland的IDE生产部份独立成为一家名为CodeGear的公司,所以 这个版本是以Borland名义推出的最后一个版本。 2007 11.0 正式名称:CodeGear RAD Studio - Delphi 2007。 2008 5.7 Borland正式宣布将CodeGear子公司出售给Embarcadero(易博 龙)技术公司。 2008 8.25 Embarcadero发布CodeGear Delphi 2009 Pre-release版。 2009 8.25 Embarcadero发布CodeGear.RAD.Studio.2010版 2010.8.30 Embarcadero 发布 Delphi XE(又名Delphi 2011,代号为Fulcr um) 2011.1.27 Embarcadero公司宣布成立一个新的精简版Delphi Starter Editi on,是在爱好者和谁得到一个稍微简化的功能集为一个小的创业公司的 价格,旨在可用性。
delphi7教程总结
delphi7教程总结Delphi7.0编程规范第一部分:软件安装与控件安装方法一、软件安装:光盘或网络安装后,将光盘CRACK目录下dent.slip拷贝到安装路径下。
未注册信息将不再显示。
二、基本安装:1、对于单个控件,Componet-->install component..-->PAS或DCU文件-->install; 2、对于带*.dpk文件的控件包,File-->Open(下拉列表框中选*.dpk)-->install即可; 3、对于带*.bpl文件的控件包,Install Packages-->Add-->bpl 文件名即可; 4、如果以上Install按钮为失效的话,试试Compile按钮;5、是run time lib则在option下的packages下的runtimepackes加之。
如果编译时提示文件找不到的话,一般是控件的安装目录不在Delphi的Lib目录中,有两种方法可以解决: 1、反安装的源文件拷入到Delphi的Lib目录下;2、或者Tools-->Environment Options中把控件源代码路径加入到Delphi的Lib目录中即可。
注意:所安装的控件是否与你所用的Delphi版本相适应。
三、控件删除:在Component/Install Packages中删除。
选Component/configure Palette…有pages和components两个区域双击components区域,选中要删除得控件,下面有得Delete按钮但系统提供的控件只能Hide,不能delete。
打开控件所在的包文件(*.dpk),从中删除控件那个文件,再重新编译该包即可如果是整个控件包都要删除的话,project->Option->Packages,删掉那个packages 四、详细控件安装1、 Ehlib控件运行Ehlib.v3.4.for.Delphi5678\Ehlib v3.4\Delphi7\DclEhLib70.dpk文件,在弹出窗口中点击Conpile,再点击install,提示安装成功后在Delphi—Tools—Environment Options—Library—Library Path中添加路径Ehlib.v3.4.for.Delphi5678\Ehlib v3.4\Delphi7\2、 Fastreport 控件分别运行fastreport 2.53\source\fr7.dpk,fastreport 2.53\source\ado\ FRADO7.dpk,fastreport 2.53\source\BDE\FRBDE7.dpk,fastreport 2.53\source\DBX\FRDBX7.dpk fastreport2.53\QueryBuilder\Source\dclOQB70.dpk fastreport2.53\QueryBuilder\Source\ADO\dclOQBADO70.dpkfastreport 2.53\QueryBuilder\Source\BDE\dclOQBBDE70.dpkfastreport 2.53\QueryBuilder\Source\DBX\dclOQBDBX70.dpk,fastreport 2.53\QueryBuilder\Source\IBX\dclOQBIBX70.dpk文件,在弹出窗口中点击Conpile,再点击install;安装完毕后,在Delphi—Tools—Environment Options—Library—Library Path中添加路径: fastreport 2.53\sourcefastreport 2.53\source\adofastreport 2.53\source\bdefastreport 2.53\source\dbxfastreport 2.53\source\ibx第 1 页共 22 页fastreport 2.53\QueryBuilder\Sourcefastreport 2.53\QueryBuilder\Source\ado fastreport2.53\QueryBuilder\Source\bde fastreport 2.53\QueryBuilder\Source\dbx fastreport 2.53\QueryBuilder\Source\ibx 3、Raize控件分别运行Raize\RC3\Source\Rz30Ctls_Dsgn70.dpk,Raize\RC3\Source\Rz30DBCtls_Dsgn70.dpk,在弹出窗口中点击Compile,再点击install;安装完毕后,在Delphi—Tools—Environment Options—Library—Library Path中添加路径:Raize\RC3\Source4、VirtualTreeview控件VirtualTreeview4.0.12\VirtualTreeview\Packages\VirtualTreesD7D.dpk文件,在弹出窗口中点击Compile,再点击install;安装完毕后,在Delphi—Tools—Environment Options—Library—Library Path中添加路径:VirtualTreeview4.0.12\VirtualTreeview\Packages 5、xlreport控件分别运行xlreport\xlr4pro123.exe和xlreport\xlr4dfull123.exe,注意安装过程中只保留delphi7和demo两个选项即可,安装完毕后将安装路径下的AfalinaSoft\XL Report 4\Source文件夹的所有文件拷到AfalinaSoft\XL Report 4\d7units中,运行d7XLR4_D.dpk文件;同样将AfalinaSoft\ProOptionPack\Source内的所有文件拷到AfalinaSoft\ProOptionPack\d7units中,运行d7OPack.dpk文件五、第三方控件的下载与安装:用到的第三方控件在了解其用途后,经主任审批后,方可进行安装。
DELPHI的编译指令
DELPHI的编译指令DELPHI的编译指令{$IFDEF WIN32} -- 这可不是批注喔!对于Delphi来说﹐左右⼤括号之间的内容是批注﹐然⽽「{$」(左括号后紧接着货币符号)对于Compiler(编译器)⽽⾔并不是批注﹐⽽是写给Compiler看的特别指⽰。
应⽤时机与场合Delphi中有许许多多的Compiler Directives(编译器指令)﹐这些编译指令对于我们的程序发展有何影响呢? 它们⼜能帮我们什么忙呢? Compiler Directive 对程序开发的影响与助益, 可以从以下⼏个⽅向来讨论:协助除错版本分类程序的重⽤与管理设定统⼀的执⾏环境协助除错稳健熟练的程序设计师经常会在开发应⽤系统的过程中﹐特别加⼊⼀些除错程序或者回馈验算的程序﹐这些除错程序对于软件品质的提升有极其正⾯的功能。
然⽽开发完成的正式版本中如果不需要这些额外的程序的话﹐要想在⼀堆程序中找出哪些是除错⽤的程序并加以删除或设定为批注﹐不仅累⼈﹐⽽且容易出错﹐况且⽇后维护时这些除错程序还⽤得着。
此时如果能够应⽤像是$IFDEF的Compiler Directives ﹐就可以轻易的指⽰Delphi要/不要将某⼀段程序编进执⾏⽂件中。
同时﹐Compiler本⾝也提供了⼀些错误检查的开关﹐可以预先对程序中可能的问题提醒程序设计师注意﹐同样有助于撰写正确的程序。
版本分类除了上述的除错版本/正式版本的分类之外﹐对于像是「试⽤版」「普及版」「专业版」的版本分类﹐也可以经由Compiler Directive的使⽤﹐为最后的产品设定不同的使⽤权限。
其它诸如「中⽂版」「⽇⽂版」「国际标准版」等全球版本管理⽅⾯﹐同样也可以视需要指⽰Delphi特别连结哪些资源档或者是采⽤哪些适当的程序。
以上的两则例⼦中﹐各版本间只需共享同⼀份程序代码即可。
Delphi 1.0 与 Delphi 2.0有许多不同之处﹐组件资源⽂件(.DCR)即是其中⼀例﹐两者的档案格式并不兼容﹐在您读过本⽂之后﹐相信可以写出这样的程序﹐指⽰Delphi在不同的版本采⽤适当的资源⽂件以利于组件的安装。
Delphi编译器、编译指令、条件编译指令(预编译指令)
Delphi编译器、编译指令、条件编译指令(预编译指令)Delphi 编译器、编译指令、条件编译指令(预编译指令)⼤部分情况下Delphi不需要⼲涉 Object Pascal 编译器的运⾏,但是有时也需要对编译器进⾏必要的设置。
1、编译器设置对话框编译器的编译指令是⽤于指定编译器对项⽬编译过程的动作和⾏为。
可以通过[Project]->[Options]->[Complier]选项页进⾏设置,绝⼤部分的编译环境都可以通过这⼀对话框进⾏调整,他包含了对代码、语法、调试信息等的设置。
1.1、代码设置(Code Generation) 代码⽣成Optimization: 代码优化开关Aligned record fields: 字对齐数据。
//这个编译指令能够在变量和类型化常量的字节对齐和字对齐之间进⾏切换,其作⽤是全局的。
Stack frames: Windows 堆栈帧。
//其作⽤域是局部的,他使编译器成为远端过程和函数⽣成特定的开头和结尾代码。
这个指令⽤于Windows 3.0的实模式,对所有Delphi应⽤程序他应该是关闭的。
Pentium-safe FDIV: Pentium安全FDIV检查。
//此指令能够在Pentium处理器中指定编译器是否创建能够检测和使⽤有缺陷的浮点除法指令的代码。
1.2、运⾏期错误(Runtime Errors)Range Checking: 范围检查。
//这个指令的作⽤范围是局部的,⽤于控制范围检验代码的⽣成。
I/O Checking: I/O检查。
//这个指令的作⽤域为局部,⽤来⽣成对⼀个⽂件的输⼊和输出过程和调⽤结果进⾏检查的代码。
⼀般应该使其功能打开。
Overflos Checking: 溢出检查。
//其作⽤是⽣成对算术溢出检查的代码。
1.3.语法设置(Syntax Optings) 语法选项Strict Var- strings: 静态变量串开关。
2018-2019-delphi7.0范例入门...-实用word文档 (28页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==delphi7.0范例入门...篇一:delphi7.0的经典实例5作为资源文件嵌入就可以解决这个问题。
用记事本写一个exe.rc,里面就一句;MYEXEEXEFILEssl.exe然后用brcc32编译exe.rc,生成exe.res文件在你的单元中插入{$Rexe.res}至于提取出来也很简单procedureTForm1.ExtractFile;varresStream:TResourceStream;begintryresStream:=TResourceStream.Create(hinstance,PChar( 'MYEXE '),PChar( 'EXEFILE '));resStream.SaveToFile( 'c:\e.exe ');resStream.Free;........exceptShowMessage( '提取文件错误 ');end;end;把Delphi程序嵌入到其他程序中把Delphi程序嵌入到其他程序中作者:佚名文章来源:网络点击数:193 更新时间:201X-4-2916:13:15怎样把Delphi程序嵌入到其他程序中?201X-02-21 15:17某个bbs 站上有文章:(想来作者不会介意我装载吧!)===================================================================== =========文件合并器的制作方法作者:王昊从想到做文件合并器到现在已经有一个多月了,但是一直没有静下心来想它的实现方法. 昨天看数学看烦了, 我终于忍不住扔开了书,开始着手"文件合并器"的编制.3小时后,终于有了眉目,今天又改了一下.现在终于能够和各位分享我的喜悦了.我愿意将我的方法写给大家,也希望各位高手不吝赐教.先看看我们的目的:编写一个程序A,它能够将两个可执行程序B和C合并在一起,形成一个新的可执行程序D. 要让用户执行D的时候,相当于同时运行B和C两个程序.我的开发工具:我现在能够用VB和DELPHI中的任何一个开发这个软件.这次我用的是DELPHI.如果你需要,也可以用VC或BCB来完成.下面我用这三个小时中我考虑的东西为线索来讲讲主要的原理.一. 我的疑惑.将两个可以执行的程序合并在一起会变成什么东西?这是我的第一个疑惑.要解决这个问题,首先要学会如何将两个文件合并在一起.我想到了内存流(MemoryStream),它能极方便的完成这个步骤.假设有两个可执行文件f1, f2.现在要把他们合并在一起.下面给出原代码.varstrmSource,strmDest:TMemoryStream;begin//先读f1strmSource:=TMemoryStream.Create;strmSource.loadfromfile(f1);//拷贝到strmdeststrmDest:=TMemoryStream.Create;strmDest.copyfrom(strmSource,strmSource.size);strmSource.clear;//再读f1strmSource.loadfromfile(f2);//拷贝到strmdeststrmDest.seek(strmDest.size,soFromBeginning);strmDest.copyfrom(strmSource,strmSource.size);strmSource.free;//这时strmDest里面便是两个文件合并后的内容了.将它保存为文件strmDest.SaveToFile('dest.exe');strmDest.free;end;我惊讶的发现,执行dest.exe就相当于执行f1!!为了确认,我将原代码中f1和f2的读入顺序对调,得到的新的dest.exe执行竟然相当于执行f2!!(此处省略了N个感叹号).我又用同样的方法在f1的后面添加很多无意义的字节,得到的新的f1运行竟然很正常.现在我们知道了,将两个或者多个可执行文件合并在一起,得到的新文件执行时只是执行第一个文件.这是非常关键的一步.二.如何分离?合并没有问题了,如何分离呢?在知道原来的两个文件的大小的情况下,这很容易作到.假设i1和i2是原来两个文件的大小(字节).合并后的文件是"dest.exe".varstrmSource,strmDest:TMemoryStream;Begin//先读dest.exestrmSource:=TMemoryStream.Create;strmSource.loadfromfile('dest.exe');//拷贝f1到strmdeststrmDest:=TMemoryStream.Create;strmDest.copyfrom(strmSource,i1);//保存f1strmDest.SaveToFile(f1);strmDest.clear;//拷贝f2到strmdeststrmSource.seek(i1,soFromBeginning);strmDest.copyfrom(strmSource,i2);strmDest.SaveToFile(f2);。
delphi7.0的经典实例5
作为资源文件嵌入就可以解决这个问题。
用记事本写一个exe.rc,里面就一句;MYEXE EXEFILE ssl.exe然后用brcc32编译exe.rc,生成exe.res文件在你的单元中插入{$R exe.res}至于提取出来也很简单procedure TForm1.ExtractFile;varresStream:TResourceStream;begintryresStream:=TResourceStream.Create(hinstance,PChar( 'MYEXE '),PChar( 'EXEFILE '));resStream.SaveToFile( 'c:\e.exe ');resStream.Free;........exceptShowMessage( '提取文件错误');end;end;把Delphi程序嵌入到其他程序中把Delphi程序嵌入到其他程序中作者:佚名文章来源:网络点击数:193 更新时间:2011-4-29 16:13:15怎样把Delphi程序嵌入到其他程序中?2007-02-21 15:17某个bbs站上有文章:(想来作者不会介意我装载吧!)============================================================================== 文件合并器的制作方法作者:王昊从想到做文件合并器到现在已经有一个多月了,但是一直没有静下心来想它的实现方法. 昨天看数学看烦了, 我终于忍不住扔开了书,开始着手"文件合并器"的编制.3小时后,终于有了眉目,今天又改了一下.现在终于能够和各位分享我的喜悦了.我愿意将我的方法写给大家,也希望各位高手不吝赐教.先看看我们的目的:编写一个程序A,它能够将两个可执行程序B和C合并在一起,形成一个新的可执行程序D. 要让用户执行D的时候,相当于同时运行B和C两个程序.我的开发工具:我现在能够用VB和DELPHI中的任何一个开发这个软件.这次我用的是DELPHI.如果你需要,也可以用VC或BCB来完成.下面我用这三个小时中我考虑的东西为线索来讲讲主要的原理.一. 我的疑惑.将两个可以执行的程序合并在一起会变成什么东西?这是我的第一个疑惑.要解决这个问题,首先要学会如何将两个文件合并在一起.我想到了内存流(MemoryStream),它能极方便的完成这个步骤.假设有两个可执行文件f1, f2.现在要把他们合并在一起.下面给出原代码.varstrmSource,strmDest:TMemoryStream;begin//先读f1strmSource:=TMemoryStream.Create;strmSource.loadfromfile(f1);//拷贝到strmdeststrmDest:=TMemoryStream.Create;strmDest.copyfrom(strmSource,strmSource.size);strmSource.clear;//再读f1strmSource.loadfromfile(f2);//拷贝到strmdeststrmDest.seek(strmDest.size,soFromBeginning);strmDest.copyfrom(strmSource,strmSource.size);strmSource.free;//这时strmDest里面便是两个文件合并后的内容了.将它保存为文件strmDest.SaveToFile('dest.exe');strmDest.free;end;我惊讶的发现,执行dest.exe就相当于执行f1!!为了确认,我将原代码中f1和f2的1的后面添加很多无意义的字节,得到的新的f1运行竟然很正常.现在我们知道了,将两个或者多个可执行文件合并在一起,得到的新文件执行时只是执行第一个文件.这是非常关键的一步.二.如何分离?合并没有问题了,如何分离呢?在知道原来的两个文件的大小的情况下,这很容易作到.假设i1和i2是原来两个文件的大小(字节).合并后的文件是"dest.exe".varstrmSource,strmDest:TMemoryStream;Begin//先读dest.exestrmSource:=TMemoryStream.Create;strmSource.loadfromfile('dest.exe');//拷贝f1到strmdeststrmDest:=TMemoryStream.Create;strmDest.copyfrom(strmSource,i1);//保存f1strmDest.SaveToFile(f1);strmDest.clear;//拷贝f2到strmdeststrmSource.seek(i1,soFromBeginning);strmDest.copyfrom(strmSource,i2);strmDest.SaveToFile(f2);strmDest.free;strmSource.free;end;三.总体思路.在解决了上述问题后,我的总体思路就出来了.假设我给用户的程序是A,它能把一个可执行的程序,我把它叫做标准程序S,他能将D的第二部分和第三部分(就是原来的可执行文件B和C)读出来,保存在磁盘上,然后执行他们.但大家看了"如何分离"后应该知道,只有我们知道了B和C的长度时,才能方便的从D中读出他们.而为了使D可以在另一个用户的机子上也能够运行,我认为B和C的长度信息应该保存在D的最后.于是,D应该具有四个部分:1: S2: B3: C4: 长度信息那么,既然我给用户的程序是A,那么这里的标准程序又从何而来呢?标准程序又应该保存在哪里呢?有两个办法.第一,给用户的程序包含两个文件,一个是A,一个是S.但我觉得这样不够爽.于是我用了另一个方法: 将S连在A的后面,成为A'.于是乎,当用户执行A'时,A'要求用户选择两个可执行文件B和C.当用户点击确定时,A'将它自身所带的S与B和C合并起来,形成D.然后,用户便可以执行D了,这时的D并不依赖于A'.D执行时,实际上执行的是它的第一部分S,S首先从D的最后取得长度信息,然后根据这些长度信息读出B和C,保存于硬盘上的某个目录.然后调用ShellExecute执行他们.这样就达到了我们的目的.那么,长度信息如何定义呢?如何将S连在A的后面呢?S如何完成自身的功能呢?这就是我下面要讲的.四.保存长度信息.我先讲一讲如何把一个字符串写入内存流.其实我自己也不知道如何直接将一个字符串的内容读到内存流中,于是我采取了先将字符串内容写入一个临时文件中,然后用loadformfile将文件内容读入内存流中.然而,我们必须知道连接在D后面的长度信息的具体长度,也就是说用几个字节保存,才能让S读出长度信息.我考虑再三,决定用32个字节来表示每个文件的长度,虽然大多数情况下,文件大小不会超出100M.看看这里的代码:varstrmSource,strmDest:TMemoryStream;f:TextFile;begin//先用上面的方法将S和B与C的内容写入strmdest,现在要在strmDest里面添加长度信息//假设s1,s2里放有B和C的大小,先把他们变为32个字节.while length(s1)<32 dobegins1:='0'+s1;end;while length(s2)<32 dobegins2:='0'+s1;end;//s1存入文件assignfile(f,'tmp');rewrite(f);trywrite(f,s1);finallyclosefile(f);end;//文件内容读入strmSourcestrmSource:=TMemoryStream.Create;strmSource.loadfromfile('tmp');//加到strmDest后面strmDest.copyfrom(strmSource,strmSource.size);strmSource.clear;deletefile('tmp');//s2存入文件assignfile(f,'tmp');trywrite(f,s2);finallyclosefile(f);end;//文件内容读入strmSourcestrmSource:=TMemoryStream.Create;strmSource.loadfromfile('tmp');//加到strmDest后面strmDest.copyfrom(strmSource,strmSource.size);strmSource.free;deletefile('tmp');end;利用代码里的方法,便可将长度信息保存在D的最后了.五.标准文件.现在我想大家感到疑惑的就是标准文件S了,这到底是个什么玩意儿?怎么做它?其实,我们在前面已经讲过了,"S首先从D的最后取得长度信息,然后根据这些长度信息读出B和C,保存于硬盘上的某个目录. 然后调用ShellExecute执行他们".要注意这里的S和D是在一起的,S只不过是D的第一部分.他们的文件名是一样的了.于是就变成了S的功能是从它自身的后面取得长度信息,然后根据这些长度信息读出B和C,保存于硬盘上的某个目录.然后调用ShellExecute执行他们.我想,具体的方法我前面已经讲的很清楚了.只要记住长度信息是分别用32个字节表示的就行了.六.完整步骤先编写S,然后编写A.再写一个程序E将S和A连接起来,S放在A的后面,成为A'.将A'发布给用户.七.注意事项.器.因此,我在这里要警告这部分人:制作或散发病毒是违反法律的,将受到法律允许范围内的最高处罚.请好自为之。
Delphi的命令行编译命令
Delphi的命令行编译命令Borland出品的Delphi,有着闪电般的编译速度,但是在界面控件使用较多、工程项目较大的时候,编译一个工程仍需要一段时间,打开庞大的Delphi IDE,也需要时间。
其实,在一个工程开发结束,调试完成之后的Release 编译,完全可以用命令行来执行,因为Delphi的编译器参数不像C++编译器那样复杂。
笔者把Delphi联机手册中关于命令行编译(command-line compiler)的几篇主题作了翻译,希望对Delphi开发人员有帮助。
目录一、命令行编译器二、命令行编译器选项三、编译器指令选项四、编译模式选项五、编译器配置文件DCC32.CFG六、调试选项七、目录选项八、IDE命令行选项九、几个IDE自动生成的文件介绍一、命令行编译器Delphi’s命令行编译器(dcc32.exe)允许你从DOS命令行方式(参照:IDE命令行选项)实现IDE编译器(delphi32.exe)的所有功能。
用DOS命令运行命令行编译器语法如下:dcc32 [选项] [文件名] [选项]零或多个参数给编译器提供信息,文件名指定需要编译的源文件名。
如果你单独输入dcc32,它会显示一个关于命令行编译的选项和语法的屏幕。
如果文件名没有扩展名,命令行编译器会查找扩展名为.dpr的同名文件,如果找不到,则查找扩展名为.pas 的同名文件。
如果你的源文件确实没有扩展名,你需要在文件名的末尾添加(.)。
如果指定的源文件是一个工程文件,编译器会创建一个扩展名为.EXE的同名可执行文件。
如果指定的源文件是一个库文件,编译器创建一个扩展名为.DLL的同名动态链接库文件。
如果指定的源文件是一个包文件,编译器会创建一个扩展名为.BPL的同名包。
如果指定的源文件是一个单元文件,编译器会创建一个扩展名为.dcu的目标代码文件。
你可以为命令行编译器指定多个参数。
一个参数包含一个破折号“-”(或“/”)和紧跟着的一个选项字符构成。
可视化编程技术-Delphi7.0第1讲
数据库支持
Delphi 7.0提供了强大的数据库支持, 使得开发人员可以轻松构建数据库应 用程序。
Delphi 7.0的应用领域
企业应用
Delphi 7.0适用于构建企业级应 用程序,如ERP、CRM等。
桌面应用
Delphi 7.0适用于构建桌面应用 程序,如办公软件、图像处理 软件等。
网络应用
Delphi 7.0适用于构建网络应用 程序,如Web应用程序、网络 服务器等。
游戏开发
Delphi 7.0适用于游戏开发,可 以快速构建游戏界面和逻辑。
02 Delphi 7.0开发环境
Delphi 7.0集成开发环境(IDE)
集成代码编辑器
提供语法高亮、自动缩进、代码提示等功能, 方便编写代码。
项目管理器
方便管理项目文件和资源,支持多项目管理 和版本控制。
调试器
提供断点、单步执行、变量监视等调试工具, 帮助开发者定位和解决问题。
代码重构工具
支持自动重构代码,提高代码质量和可维护 性。
Delphi 7.0的组件库
1
VCL(Visual Component Library):包含丰富 的可视化组件,如按钮、文本框、列表框等,支 持自定义和扩展。
2
FMX(FireMonkey):适用于跨平台开发的全 新GUI框架,支持Windows和iOS平台。
3
BPL(Borland Programming Language):提 供一系列用于开发数据库应用程序的组件和工具。
Delphi 7.0的调试工具
调试器
提供断点、单步执行、变量监视等调试工具,帮助开发者定位和 解决问题。
性能分析器
分析应用程序的性能瓶颈,提供优化建议。
Delphi7的开发调试技巧及快捷键.
(转 Delphi7的开发调试技巧及快捷键Delphi 开发的调试技巧1、设置调试选项Delphi 主菜单。
【 Project 】 ->【 Options 】 , 或单击工程管理器中的【 Project Options 】按钮。
显示 Project Options,选择 Complier<1>选中 Debug Information :把调试信息嵌入到 DCU 单元文件,会加大编译后的DCU 文件,但不会影响最后生成的 exe 的大小和执行速度。
同时激活【 Search 】菜单中的【 Find Error 】命令。
当文件中包含调试信息并得到一个运行时错误 (run-time error, 记录下 Delphi 提供的 16进制地址,在【 Search 】->【 Find Error 】中输入, Delphi 将重新编译程序,并停留在产生错误的命令行。
<2>Local symbols:决定调试器能否看到在 Implementation 中定义的局部变量。
<3>Reference infoj选项 /Definition Only选项是否产生应用程序中对象标识符的引用信息。
信息和对象代码存在 dcu 文件中, 可以使用对象浏览器查看。
如果 Definition Only 选项同时选中,编译器将生成标识符定义位置的信息,能够激活对象浏览器的 Refenrence 页。
如果不选, Dcu 文件更小。
编辑器命令{$D} Debug Information{$L} Local Information{$Y} Symbol Information{$C} Assertions2、使用内部调试器<1> 命令行参数在【 Run 】->【 Parameters 】中设置<2>断点条件断点使源代码断点只有在满足某个条件时才有效。
在【 View 】->[Debug windows]->【 BreakPoints 】打开“BreakPoint List”对话框, 右击断点,从弹出菜单中选择属性。
在Delphi 7.0中使用DLL
在Delphi 7.0中使用DLL尹红梅;朱再新【摘要】介绍了在Delphi 7.0中DLL的基本概念和创建过程及调用方法.提出了如何将现有工程项目转化成DLL,如何用动态加载的方法进行引用.在调用DLL之后,可以使用单元的Initialization与Finalization对DLL初始化和关闭,也可以用系统预定义的两个过程ExitProc或DLLProc调用DLL,由他们处理DLL的初始化和善后.对使用过程中可能出现的错误和例外情况作了详细的分析.最后指出DLL中需以某种特定的方式声明导出函数、变量和类,应用工程需以某种特定的方式调用DLL的导出函数、变量或类.【期刊名称】《现代电子技术》【年(卷),期】2006(029)017【总页数】3页(P155-157)【关键词】Delphi;动态链接库;类;动态加载;声明【作者】尹红梅;朱再新【作者单位】扬州市出入境检验检疫局,江苏,扬州,225003;扬州市科委,江苏,扬州,225003【正文语种】中文【中图分类】TP312DLL(Dynamic-Link Libraries,动态链接库)里是一些可执行的模块以及资源(如位图、图标等)。
可以认为DLL和EXE基本上是一回事,只是DLL不能直接执行,而必须由应用程序或者其他DLL调用。
DLL为应用程序间的资源共享提供了方便,同时也是多语言混合编程的重要手段。
由此可见学习使用DLL是Windows环境下程序员必须掌握的一项重要技术。
1 DLL的创建用Delphi创建一个DLL是十分简单的,首先需要新建一个DLL的Porject(如果使用Delphi 7.0则可以在File→New的对话框中选择DLL),当然也可以自己写,现在这个Project是这样的:library Project1;uses SysUtils,Classes;beginend当然这是一个空DLL,现在让加入一个函数,让他成为第一个可以使用的DLL。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
const
I: Integer = 12;
begin
I := 14; //编译通过
end;
如果{$J-}或{$WRITEABLECONST Байду номын сангаасFF},如下
const
I: Integer = 12;
begin
Comlete Boolean Eval: 完全布尔表达量判定,用于执行强制的完整表达式判定。比如在{$B-}状态,(1 = 1) or (2 = 2)只运算(1 = 1),因
为这时已经知道整个表达式结果。完全布尔量判定,有可能导致系统崩溃,所以一般不使用他。
缺省:{$B-}{$BOOLEVAL OFF}
如果{$W-}{$STACKFRAMES OFF},Delphi 会只在需要时才产生堆帧。
缺省:{$W-}{$STACKFRAMES OFF}
注:谁知道 Delphi 会在什么时后才产生堆帧,老人家向大家请教了?
Pentium-safe FDIV: Pentium安全FDIV检查。此指令能够在Pentium处理器中指定编译器是否创建能够检
**
A.1 使用编译设置对话框
编译器的编译指令是用于指定编译器对项目编译过程的动作和行为。可以通过[Project]->[Options]->
[Complier]选项页进行设置(快捷键:Crtl+Shift+F11),绝大部分的编译环境都可以通过这一对话框进行调
整,他包含了对代码、语法、调试信息等的设置。
数。开放参数允许将大小不一的串变量传递到同一个过程或函数中,一般在汇编中会使用到。
缺省:{$P+}{$OPENSTRINGS ON}
注:向后兼容,已不使用
Huge Strings: 字符串类型开关。用于控制Ansistring和Shortstring类型的切换。当打开时符合Ansistring,关闭时符合Shortstring。
I := 2;
end;
如果{$O-}或{$OPTIMIZATION OFF},如下
var
I: Integer;
begin
I := 1; //被编译,也就是说调试的时候,这行有断点
I := 2;
end;
缺省:{$O+}{$OPTIMIZATION ON}
如果{$C-}或{$ASSERTIONS OFF},Assert函数无效。
缺省:{$C+}{$ASSERTIONS ON}
Use Debug DCUs: 使用或禁止VCL的DCU文件调试,选中了就可以调试Delphi的{Borland}\Delphi7\Source路径下的代码了。
Reference Info/Definitions Only: 符号信息开关。用于允许或禁止由Delphi的对象浏览器使用的符号引用信息的生成。
如果{$YD}或{DEFINITIONINFO ON}, 在Explorer Code中按Crtl+Left有效,但Brower(Ctrl+Shitf+B)不能显示符号所有引用的位置。
如果{$D+}或{$DEBUGINFO ON},那么你就可以单步调试。
如果{$D-}或{$DEBUGINFO OFF},你不能单步调试。
缺省:{$D+}{$DEBUGINFO ON},其实设置{$D+}就可以了,他不会影响EXE文件的大小和执行速度,只是dcu文件增大。
Local Symbols: 局部符号开关。允许或禁止局部符号信息的创建。是否生成本地符号(变量、常数)信息供调试器使用。
测和使用有缺陷的浮点除法指令的代码。
如果{$U+}{$SAFEDIVIDE ON}自动产生对 Pentium 芯片的 bug 检查代码。
如果{$U-}{$SAFEDIVIDE OFF}不产生对 Pentium 芯片的 bug 检查代码。
缺省:{$U-}{$SAFEDIVIDE OFF}
,以及指向相同类型的有类型和无类型指针是否兼容。
如果{$T+}或{$TYPEDADDRESS ON},如下
var
I1: ^Integer;
I2: ^Integer;
begin
I1 := I2; //编译通过
end;
如果{$T-}或{$TYPEDADDRESS OFF},如下
I := 14; //编译不通过,提示"Left side cannot be assigned to"
end;
缺省:{$J-}{$WRITEABLECONST OFF}
4.调试(Debugging)
Debug Information: 调试信息开关。用于设置是否把调试信息写入以编译的单元文件(.dcu)。
如果{$L+}{$LOCALSYMBOLS ON},可以在调试状态观察和修改本地符号的值。
如果{$L-}{$LOCALSYMBOLS OFF},不能观察和修改本地符号的值。
缺省:{$L+}{$LOCALSYMBOLS ON}
注:{$D+}时有效,不影响最后生成的可执行文件的大小和运行速度。这里符号是指常量(有类型)和变量。
var
I1: ^Integer;
I2: ^Integer;
begin
I1 := I2; //编译不通过,提示"Incompatible types"
end;
缺省:{$T-}{$TYPEDADDRESS OFF}
Open Parameters: 开放参数开关。对于早期Delphi中代替现在的长字符串的OpenString的使用规定,用于控制使用String关键字声明的变量参
缺省:{$YD}{DEFINITIONINFO ON}
注:{$D+}且{$L+}时有效,不影响最后生成的可执行文件的大小和运行速度。这里符号是指单元、类型、常量、变量、类、函数、过程等。
Assertions: 决定是否可以使用Assert全局方法。
如果{$C+}或{$ASSERTIONS ON}, Assert函数有效。
1.代码设置(Code Generation)
Optimization: 是否优化代码。包括防止变量到CPU寄存器、合并分解表达式、生成中间变量等,其作用
域是局部的。
如果{$O+}或{$OPTIMIZATION ON},如下
var
I: Integer;
begin
I := 1; //不被编译,也就是说调试的时候,这行没有断点
注:这个已经不再需要了。这批有 bug 的芯片,intel 公司已经基本回收掉了(老人家现在还保留一块,
值钱了!)。
2.运行期错误(Runtime Errors)
Range Checking: 范围检查。这个指令的作用范围是局部的,用于控制范围检验代码的生成。是否对
ShortString、有序类型和Array执行越界检查。打开后增加可执行文件大小、减慢速度,一般在调试阶段
{$Y+}或{REFERENCEINFO ON}, 在Explorer Code中按Crtl+Left有效,并且Brower(Ctrl+Shitf+B)可以显示符号所有引用的位置。
{$Y-}或{DEFINITIONINFO OFF}, 在Explorer Code中按Crtl+Left无效,并且Brower(Ctrl+Shitf+B)不能显示符号所有引用的位置。
Strict Var- strings: 静态变量串开关。用来控制对以变量参数形式传递的串的类型检查。当ShortString作为var参数时,是否执行严格类型
检查(包括最大长度)。为向后兼容提供,对AnsiString无效
缺省:{$V+}{$VARSTRINGCHECKS ON}
注:Delphi7.0中这个编译开关已经不起作用了
end; //?=内存地址
缺省:{$R-}{$RANGECHECKS OFF}
I/O Checking: I/O检查。这个指令的作用域为局部,用来生成对一个文件的输入和输出过程和调用结果
进行检查的代码。一般应该使其功能打开。
如果{$I+}或{$IOCHECKS ON},EInOutError检查,一旦发生I/O错误时,将会触发一个EInOutError的例外
Extended Syntax: 扩展语法开关。他能允许或禁止Delphi的扩展语法。对于函数调用和Null结束字符串的使用规定。
缺省:{$X+}{$EXTENDEDSYNTAX ON}
注:向后兼容,已不使用。
Typed @ Operator: 类型化的@运算符检查。应用于局部的变量引用上,控制@运算符返回的指针值类型。@(等价于Addr)是否得到有类型指针
如果{$H+}或{$LONGSTRINGS ON},string类型为AnsiString,长度>255。
如果{$H-}或{$LONGSTRINGS OFF},string类型为ShortString,长度<=255。
缺省:{$H+}{$LONGSTRINGS ON}
Assignable Typed Constants: 可分配类型常量,是否可以修改有类型常量的值。用于向下与Delphi 1.0兼容。
var
B: Byte;
begin
B := 255; //运行时 B := 0;