delphi

阅读 / 问答 / 标签

delphi edit 控件问题

我不是很了解你自己的edit控件,不过,你可以写个procedure来设定,在什么时候使你想要的chinese_edit 1..等的属性.你的chinese_edit1,2..等都继承自chinese_edit控件,应该可以这样吧 :procedure setimemode(chiedit of array of Tchinese_edit);var i : integer;begin for i := low(chiedit) to high(chieidt) do begin chiedit[i].imemode := imHanguel; chiedit[i].imename := "智能ABC..";//在edit的属性栏中就可以找到. end;end;然后在需要的地方调用:setimemode([chinese_edit1.chinese_edit2,...]);这时候所有你指定的edit就改变成procedure里你设置的输入法了.(确保你自制的chinese_edit有imemode,miename属性).

DELPHI7中如何取得edit1前4位数字,在edit2显示电话所在地?

POS是查找一个字符串在另一个字符串中第一次出现的位置。如POS(".","12.34")返回值为3取一个字符串前4位用COPY函数如COPY(EDIT1.TEXT,1,4)返回EDIT1文本编辑框中的前4位。

delphi 如何将Edit.text的值赋给一个变量

s:=inttostr(edit1.text)

delphi,N个edit控件,1个button控件,做修改操作的时候,无论在哪个edit中输入,单击button都成功修改并

用一个全局变量做标识,把所有edit的OnChange事件指向一个,然后再判断

Delphi里从Edit1到Edit5,初始值都为0,第一秒Edit1变为1;第二秒Edit2变为2;依次五个Edit全变位1,怎么写

依次五个Edit全变为1? 还是5个Edit的text依次加1?

delphi 中,动态生成的edit 控件问题?

不太清楚你说什么,我的理解是:动态生成edit控件,然后,你要编辑动态生成的edit的内容,最后在退出主程序(或edit的parent)时,触发一个事件。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end;var Form1: TForm1; myedit:Tedit;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin myedit:=Tedit.Create(application); myedit.Parent:=self; myedit.Top:=10; myedit.Left:=10;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin if myedit.Text<>"" then//如果myedit不为空,就响一下,并showmessage; begin beep; showmessage(myedit.Text); end; myedit.Free;//不晓得是否有必要释放,我忘了,不过多一行也不算啥end;end.另一个例子:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } procedure OntbnClick(Sender: TObject);//创建一个过程,用来处理tbn被点击事件 end;var Form1: TForm1; tbn:TButton; myedit:TEdit;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin tbn:=TButton.Create(application); with tbn do begin parent:=self; caption:="确定"; left:=20; top:=40; end; tbn.OnClick:=OntbnClick;//将创建的过程赋给tbn被点击事件 myedit:=TEdit.Create(application); with myedit do begin parent:=self; left:=10; top:=10; end;end;procedure TForm1.OntbnClick(Sender: TObject);begin if myedit.Text<>"" then//过程触发的事件 showmessage(myedit.Text);{如果只需要判断myedit是否被编辑过,忽略为空的情况,可以改为if myedit.Modified then}end;end.

在DELPHI中怎么让edit输入的只能是中文

在keypress下面写, if not key in [0..9] then eixt 这样基本就可以了。

delphi怎么控制edit中只能输入数字??

你可以先将你抓到的包保存到文件 主要代码: /* 回调函数,用来处理数据包 */ void packet_handler(u_char *dumpfile, const struct pcap_pkthdr *header, const u_char *pkt_data) { /* 保存数据包到堆文件 */ pcap_dump(dumpfile, header,

在Delphi中。如何实现一个Edit查询多种条件?

edit1: 学号, edit2: 职务, edit3: 籍贯,edit4: 面貌.与你的条件有些出入的地方是:我添加了一个radiogroup控件来让用户选择,是按学号查询还是按其他类别查询. 当选择按学号查询时,其它按钮不可用;按其它查询,edit1不可用(这个你自己可以设置是否可用.)如果edit2等中有内容即被当作查询条件,如果为空则不作查询条件. 代码大致如下: //控制按钮是否可用: procedure TForm1.RadioGroup1Click(Sender: TObject); begin case radiogroup1.ItemIndex of 0: begin radiobutton1.Enabled := false; radiobutton2.Enabled := false; datetimepicker1.Enabled := false; datetimepicker2.Enabled := false; edit2.Enabled := false; edit3.Enabled := false; edit4.Enabled := false; end; 1: begin edit1.Enabled := false; radiobutton1.Enabled := true; radiobutton2.Enabled := true; datetimepicker1.Enabled := true; datetimepicker2.Enabled := true; edit2.Enabled := true; edit3.Enabled := true; edit4.Enabled := true; end; end; 查询按钮 procedure TForm1.Button1Click(Sender: TObject); var sql, v_sex : string; begin if radiogroup1.ItemIndex = 0 then//按学号查询 begin with adoquery1 do begin close; sql.Clear; sql.Add("select * from students where num =""" + trim(edit1.Text)+""""); open; end; end else begin sql := "select * from students where "; if trim(edit2.Text) <> "" then sql := sql + "duty = " + Ansiquotedstr(edit2.Text, #39); if trim(edit3.Text) <> "" then begin if trim(edit2.Text) = "" then sql := sql + "nation=" + Ansiquotedstr(edit3.Text, #39) else sql := sql + "and nation= "+ Ansiquotedstr(edit3.Text, #39); end; if trim(edit4.Text) <> "" then begin if (trim(edit2.Text) = "") and (trim(edit3.Text) ="") then sql := sql + "mianmao = " + Ansiquotedstr(edit4.Text, #39) else if (trim(edit2.Text) <> "") or (trim(edit3.Text) <> "") then sql := sql + "and mianmao = " + Ansiquotedstr(edit4.Text, #39); end; if radiobutton1.Checked then begin v_sex := radiobutton1.Caption; if (trim(edit2.Text) = "") and (trim(edit3.Text) ="") and (trim(edit4.Text) = "") then sql := sql + "sex =" + Ansiquotedstr(radiobutton1.Caption, #39) else if (trim(edit2.Text) <> "") or (trim(edit3.Text) <> "") or (trim(edit4.Text) <> "") then sql := sql + "and sex =" + Ansiquotedstr(radiobutton1.Caption, #39); end; if radiobutton2.Checked then begin v_sex := radiobutton2.Caption; if (trim(edit2.Text) = "") and (trim(edit3.Text) ="") and (trim(edit4.Text) = "") then sql := sql + "sex =" + Ansiquotedstr(radiobutton2.Caption, #39) else if (trim(edit2.Text) <> "") or (trim(edit3.Text) <> "") or (trim(edit4.Text) <> "") then sql := sql + "and sex =" + Ansiquotedstr(radiobutton2.Caption, #39); end; if (trim(edit2.Text) = "") and (trim(edit3.Text) = "" ) and (trim(edit4.Text) = "") and (v_sex = "") then//如果edit控件全为空,就显示所有记录,这里可以自己设置. sql := "select * from students"; adoquery1.Close; adoquery1.SQL.Clear; adoquery1.SQL.Append(sql); adoquery1.Open; end; 这里我没有实现日期查询,因为还不知道..(很少使用ACCESS,惭愧..)

delphi动态创建edit的问题.求大神帮助

在你的for语句前面加一段。 for i := 0 to Panel1.ControlCount-1 do begin if Assigned(editm[i]) then begin FreeAndNil(editm[i]); end; end;

delphi中关于edit控件

自带的Edit控件似乎没这个功能像TLabel就有Alignment属性进行控制如果要TEdit有这个功能,要么你自己写要么用3方控件来实现像Raize里的Edit就有Alignment属性要下的话在www.2ccc.com 直接搜 Raize就行。

delphi中maskedit和edit的区别

maskedit输入的是你规定好的格式,不满足合适就没办法输入。edit就是普通文本框

DELPHI 多个edit计算

procedure TForm1.FormCreate(Sender: TObject);begin Edit1.Text := "100";end;procedure TForm1.Edit2Change(Sender: TObject);var iResult: Integer;begin iResult := 100 - StrToInt(Edit2.Text) - StrToInt(Edit3.Text) - StrToInt(Edit4.Text) - StrToInt(Edit5.Text) - StrToInt(Edit6.Text); if iResult > 0 then Edit1.Text := IntToStr(Result);end;//然后将Edit3-6的所有OnChange都选择Edit2Change//注意程序中没有加转化类型的判断

delphi中edit的用法

设置焦点到Edit1输入框。key<>#8的意思是,当键盘动作为退格键(删除键)时,允许键盘动作。

Delphi的常用函数

名称 类型 说明 abort 函数 引起放弃的意外处理 abs 函数 绝对值函数 addexitproc 函数 将一过程添加到运行时库的结束过程表中 addr 函数 返回指定对象的地址 adjustlinebreaks 函数 将给定字符串的行分隔符调整为cr/lf序列 align 属性 使控件位于窗口某部分 alignment 属性 控件标签的文字位置 allocmem 函数 在堆栈上分配给定大小的块 allowgrayed 属性 允许一个灰度选择 ansicomparestr 函数 比较字符串(区分大小写) ansicomparetext 函数 比较字符串(不区分大小写) ansilowercase 函数 将字符转换为小写 ansiuppercase 函数 将字符转换为大写 append 函数 以附加的方式打开已有的文件 arctan 函数 余切函数 assignfile 函数 给文件变量赋一外部文件名 assigned 函数 测试函数或过程变量是否为空 autosize 属性 自动控制标签的大小 backgrounddi2001.jpg 属性 背景色 beginthread 函数 以适当的方式建立用于内存管理的线程 bevelinner 属性 控件方框的内框方式 bevelouter 属性 控件方框的外框方式 bevelwidth 属性 控件方框的外框宽度 blockread 函数 读一个或多个记录到变量中 blockwrite 函数 从变量中写一个或多个记录 borderstyle 属性 边界类型 borderwidth 属性 边界宽度 break 命令 终止for、while、repeat循环语句 brush 属性 画刷 caption 属性 标签文字的内容 changefileext 函数 改变文件的后缀 chdir 函数 改变当前目录 checked 属性 确定复选框选中状态 chr 函数 返回指定序数的字符 closefile 命令 关闭打开的文件 color 属性 标签的颜色 columns 属性 显示的列数 comparestr 函数 比较字符串(区分大小写) concat 函数 合并字符串 continue 命令 继续for、while、repeat的下一个循环 copy 函数 返回一字符串的子串 cos 函数 余弦函数 ctl3d 属性 是否具有3d效果 cursor 属性 鼠标指针移入后的形状 date 函数 返回当前的日期 datetimetofiledate 函数 将delphi的日期格式转换为dos的日期格式 datetimetostr 函数 将日期时间格式转换为字符串 datetimetostring 函数 将日期时间格式转换为字符串 datetostr 函数 将日期格式转换为字符串 dayofweek 函数 返回星期的数值 dec 函数 递减变量值 decodedate 函数 将日期格式分解为年月日 decodetime 函数 将时间格式分解为时、分、秒、毫秒 delete 函数 从字符串中删除子串 deletefile 命令 删除文件 diskfree 函数 返回剩余磁盘空间的大小 disksize 函数 返回指定磁盘的容量 dispose 函数 释放动态变量所占的空间 disposestr 函数 释放字符串在堆栈中的内存空间 ditherbackgrounddi2001.jpg?使背景色的色彩加重或减少50% dragcursor 属性 当鼠标按下时光标的形状 dragmode 属性 按动的作用方式 dropdowncount 属性 容许的显示数据项的数目 editmask 属性 编辑模式 enabled 属性 是否使标签呈现打开状态 encodedate 函数 将年月日合成为日期格式 encodetime 函数 将时、分、秒、毫秒合成为时间格式 endmargin 属性 末尾边缘 eof 函数 对有类型或无类型文件测试是否到文件尾 eoln 函数 返回文本文件的行结束状态 erase 命令 删除外部文件 exceptaddr 函数 返回引起当前意外的地址 exclude 函数 从集合中删除一些元素 exceptobject 函数 返回当前意外的索引 exit 命令 立即从当前的语句块中退出 exp 函数 指数函数 expandfilename 函数 返回包含绝对路径的字符串 extendedselect 属性 是否允许存在选择模式,true时,multiselect才有意义 extractfiledir 函数 返回驱动器和路径 extractfileext 函数 返回文件的后缀 extractfilename 函数 返回文件名 extractfilepath 函数 返回指定文件的路径 fileage 函数 返回文件已存在的时间 fileclose 命令 关闭指定的文件 filecreate 命令 用指定的文件名建立新文件 filedatetodatetime 函数 将dos的日期格式转换为delphi的日期格式 fileexists 函数 检查文件是否存在 filegatattr 函数 返回文件的属性 filegetdate 函数 返回文件的dos日期时间标记 fileopen 命令 用指定的存取模式打开指定的文件 filepos 函数 返回文件的当前指针位置 fileread 命令 从指定的文件读取 filesearch 命令 在目录中搜索指定的文件 fileseek 函数 改变文件的指针 filesetattr 函数 设置文件属性 filesetdate 函数 设置文件的dos日期时间标记 filesize 函数 返回当前文件的大小 filewrite 函数 对指定的文件做写操作 fillchar 函数 用指定的值填充连续字节的数 findclose 命令 终止findfirst/findnext序列 findfirst 命令 对指定的文件名及属性搜索目录 findnext 命令 返回与文件名及属性匹配的下一入口 floattodecimal 函数 将浮点数转换为十进制数 floattostrf 函数 将浮点数转换为字符串 floattostr 函数 将浮点数转换为字符串 floattotext 函数 将给定的浮点数转换为十进制数 floattotextfmt 函数 将给定的浮点数转换为十进制数 flush 函数 将缓冲区的内容刷新到输出的文本文件中 fmtloadstr 函数 从程序的资源字符串表中装载字符串 fmtstr 函数 格式化一系列的参数,其结果以参数result返回 font 属性 设置字体 format 函数 格式化一系列的参数并返回pascal字符串 formatbuf 函数 格式化一系列的参数 formatdatetime 函数 用指定的格式来格式化日期和时间 formatfloat 函数 指定浮点数格式 frac 函数 返回参数的小数部分 freemem 函数 按给定大小释放动态变量所占的空间 getdir 返回指定驱动器的当前目录 getheapstatus 返回内存管理器的当前状态 getmem 建立一指定大小的动态变量,并将指针指向该处 getmemorymanager 返回内存管理器的入口点 glyph 函数 按钮上的图象 halt 停止程序的执行并返回到操作系统 hi 返回参数的高地址位 high 返回参数的上限值 hint 属性 提示信息 int 返回参数的整数部分 include 添加元素到集合中 insert 在字符串中插入子串 inttohex 将整型数转换为十六进制数 inttostr 将整型数转换为字符串 ioresult 返回最新的i/o操作完成状态 isvalidident 测试字符串是否为有效的标识符 items 属性 默认显示的节点 kind 属性 摆放样式 largechange 属性 最大改变值 layout 属性 图象布局 length 函数 返回字符串的动态长度 lines 属性 缺省显示内容 ln 函数 自然对数函数 lo 函数 返回参数的低地址位 loadstr 函数 从应用程序的可执行文件中装载字符资源 lowercase 函数 将给定的字符串变为小写 low 函数 返回参数的下限值 max 属性 最大值 maxlength 属性 最大长度 min 属性 最小值 mkdir 命令 建立一子目录 move 函数 从源到目标复制字节 multiselect 属性 允许同时选择几个数据项 name 属性 控件的名字 new 函数 建立新的动态变量并设置一指针变量指向他 newstr 函数 在堆栈上分配新的字符串 now 函数 返回当前的日期和时间 odd 测试参数是否为奇数 onactivate 事件 焦点移到窗体上时触发 onclick 事件 单击窗体空白区域触发 ondblclick 事件 双击窗体空白区域触发 onclosequery 事件 使用者试图关闭窗体触发 onclose 事件 窗体关闭后才触发 oncreate 事件 窗体第一次创建时触发 ondeactivate 事件 用户切换到另一应用程序触发 ondragdrop 事件 鼠标拖放操作结束时触发 ondragover 事件 有其他控件从他上面移过触发 onmousedown 事件 按下鼠标键时触发 onmouseup 事件 释放鼠标键时触发 onmousemove 事件 移动鼠标时触发 onhide 事件 隐藏窗体时触发 onkeydown 事件 按下键盘某键时触发 onkeypress 事件 按下键盘上的单个字符键时触发 onkeyup 事件 释放键盘上的某键时触发 onpaint 事件 窗体上有新部分暴露出来触发 onresize 事件 重新调整窗体大小触发 onshow 事件 在窗体实际显示之前瞬间触发 ord 返回序数类的序数 outlinestyle 属性 类型 outofmemoryerror 引起outofmemory意外 pageindex 属性 页索引 pages 属性 页 paramcount 函数 返回在命令行上传递给程序的参数数量 paramstr 函数 返回指定的命令行参数 pen 属性 画刷设置 pi 函数 返回圆周率pi picture 属性 显示图象 pictureclosed 属性 设置closed位图 pictureleaf 属性 设置leaf位图 pictureminus 属性 设置minus位图 pictureopen 属性 设置open位图 pictureplus 属性 设置plus位图 pos 函数 在字符串中搜索子串 pred 函数 返回先前的参数 random 函数 返回一随机函数 randomize 函数 用一随机数初始化内置的随机数生成器 read 函数 对有格式的文件,读一文件组件到变量中; 对文本文件,读一个或多个值到一个或多个变量中 readln 函数 执行read过程,然后跳到文件下一行 readonly 属性 只读属性 reallocmem 函数 分配一动态变量 rename 函数 重命名外部文件 renamefile 函数 对文件重命名 reset 函数 打开已有的文件 rewrite 函数 建立并打开一新的文件 rmdir 函数 删除空的子目录 round 函数 将实数值舍入为整型值 runerror 函数 停止程序的执行 scrollbars 属性 滚动条状态 seek 函数 将文件的当前指针移动到指定的组件上 seekeof 函数 返回文件的文件结束状态 seekeoln 函数 返回文件的行结束状态 selectedcolor 属性 选中颜色 setmemorymanager 函数 设置内存管理器的入口点 settextbuf 函数 给文本文件指定i/o缓冲区 shape 属性 显示的形状 showexception 函数 显示意外消息与地址 sin 函数 正弦函数 sizeof 函数 返回参数所占的字节数 smallchange 属性 最小改变值 sorted 属性 是否允许排序 sqr 函数 平方函数 sqrt 函数 平方根函数 startmargin 属性 开始边缘 state 属性 控件当前状态 str 函数 将数值转换为字符串 stralloc 函数 给以null结束的字符串分配最大长度-1的缓冲区 strbufsize 函数 返回存储在由stralloc分配的字符缓冲区的最大字符数 strcat 函数 将一字符串附加到另一字符串尾并返回合并的字符串 strcomp 函数 比较两个字符串 strcopy 函数 将一个字符串复制到另一个字符串中 strdispose 函数 释放堆栈上的字符串 strecopy 函数 将一字符串复制到另一个字符串并返回结果字符串尾部的指针 strend 函数 返回指向字符串尾部的指针 stretch 属性 自动适应控件的大小 strfmt 函数 格式化一系列的参数 stricomp 函数 比较两个字符串(不区分大小写) stringtowidechar 函数 将ansi字符串转换为unicode字符串 strlcat 函数 将一字符串中的字符附加到另一字符串尾并返回合并的字符串 strlcomp 函数 以最大长度比较两个字符串 strlcopy 函数 将一个字符串中的字符复制到另一个字符串中 strlen 函数 返回字符串中的字符数 strlfmt 函数 格式化一系列的参数,其结果中包含有指向目标缓冲区的指针 strlicomp 函数 以最大长度比较两个字符串(不区分大小写) strlower 函数 将字符串中的字符转换为小写 strmove 函数 将一个字符串中的字符复制到另一个字符串中 strnew 函数 在堆栈上分配一个字符串 strpas 函数 将以null结束的字符串转换为pascal类的字符串 strpcopy 函数 将pascal类的字符串复制为以null结束的字符串 strplcopy 函数 从pascal类的最大长度字符串复制为以null结束的字符串 strpos 函数 返回一个字符串在另一个字符串中首次出现指针 strrscan 函数 返回字符串中最后出现字符的指针 strscan 函数 返回字符串中出现首字符的指针 strtodate 函数 将字符串转换为日期格式 strtodatetime 函数 将字符串转换为日期/时间格式 strtofloat 函数 将给定的字符串转换为浮点数 strtoint 函数 将字符串转换为整型 strtointdef 函数 将字符串转换为整型或默认值 strtotime 函数 将字符串转换为时间格式 strupper 函数 将字符串中的字符转换为大写 style 属性 类型选择 suce 函数 返回后继的参数 swap 函数 交换参数的高低地址位 tabs 属性 标记每一项的内容 tabindex 属性 标记索引 text 属性 显示的文本 texttofloat 函数 将字符串(以null结束的格式)转换为浮点数 time 函数 返回当前的时间 timetostr 函数 将时间格式转换为字符串 trim 函数 从给定的字符串中删除前导和尾部的空格及控制字符 trimleft 函数 从给定的字符串中删除首部的空格及控制字符 trimright 函数 从给定的字符串中删除尾部的空格及控制字符 trunc 函数 将实型值截取为整型值 truncate 函数 截去当前文件位置后的内容 unselectedcolor 属性 未选中颜色 upcase 将字符转换为大写 uppercase 将给定的字符串变为大写 val 函数 将字符串转换为整型值 vararraycreate 函数 以给定的界限和维数建立变体数组 vararraydimcount 函数 返回给定变体的维数 vararrayhighbound 函数 返回给定变体数组维数的上界 vararraylock 函数 锁定给定的变体数组 vararraylowbound 函数 返回给定变体数组维数的下界 vararrayof 函数 返回指定变体的数组元素 vararrayredim 函数 通过改变上限来调整变体的大小 vararrayunlock 函数 解锁指定的变体数组 varastype 函数 将变体转换为指定的类型 varcase 函数 将变体转换为指定的类型并保存他 varclear 函数 清除指定的变体 varcopy 函数 将指定的变体复制为指定的变体 varformdatetime 函数 返回包含日期时间的变体 varisarray 函数 测试变体是否为数组 varisempty 函数 测试变体是否为unassigned varisnull 函数 测试变体是否为null vartodatetime 函数 将给定的变体转换为日期时间 vartype 函数 将变体转换为指定的类型并保存他 visible 属性 控件的可见性 wantreturns 属性 为true时,按回车键产生一个回车符; 为false时,按下ctrl+enter才产生回车符 write 命令 对有格式的文件,写一变量到文件组件中; 对文本文件,写一个或多个值到文件中 writeln 命令 执行write过程,然后输出一行结束标志 widecharlentostring 函数 将ansi字符串转换为unicode字符串 widecharlentostrwar 函数 将unicode字符串转换为ansi字符串变量 widechartostring 函数 将unicode字符串转换为ansi字符串 widechartostrvar 函数 将unicode字符串转换为ansi字符串变量

delphi中如何去除右边字符

varstr:string;beginstr := "abcdefghigklmn";Delete(str,Length(str)-4,5);ShowMessage(str);end;

如何用DELPHI当前日期减五十天

DateUtilsfunction IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime;

DELPHI基础教程:异常处理与程序调试(三)[1]

   断点的使用    设置断点   设置断点首先在Code Editor中选定你想设置断点的代码行 而后进行如下的任一种操作   ● 单击选定代码行左边的空白   ● 按F   ● 选择Code Editor加速菜单的Toggle BreakPoint项   ● 选择Run|Add Breadpoint打开断点编辑对话框(Edit BreakPoint Dialog Box) 而后选择New去确认一个新的断点设置或选择Modify去对一个存在的断点进行修改   ● 从BreakPoint List加速菜单中选择Add BreakPoint项   断点必须位于可执行代码行上 凡设置在注释 空白行 变量说明上的都是无效的 另外 断点既可以在设计状态下设置也可以在运行调试状态下设置    断点的操作   断点列表窗口(BreakPoint List Window)列出了所有断点所在的源文件名 行号 条件以及已通过的次数 如果一个断点非法或失去功能 则在列表窗口中变灰   断点列表窗口可以通过选择View|BreakPoint菜单打开   断点列表窗口是断点操作的基础    显示和编辑断点处的代码   利用断点列表窗口可以快速找到断点在源代码中的位置   首先选定断点而后从加速菜单中选择View Source或Edit Source 此时Code Editor更新 显示该断点位置处的代码 如果选择的是View Source 则断点列表窗口仍保持活动 如果选择的是Edit Source 则Code Editor获得输入焦点 可以在断点位置修改源代码    断点功能的丧失和恢复   使断点失去功能可以使断点从当前程序运行中隐藏起来 假如你定义了一个断点当前并不需要 但可能在以后使用 则这一功能是很有用的   断点列表窗口加速菜单的Disable BreakPoint和Disable All BreakPoints项可以使当前选中断点或所有断点失去功能   加速菜单中的Enable BreakPoint和Enable All BreakPoint 可以使相应断点恢复功能    断点的删除   断点删除可以从Code Editor或断点列表窗口中进行   从Code Editor:   ● 把光标停到包含断点的行并按F (或选择加速菜单的Toggle BreakPoint)   ● 单击包含断点行左边的终止符   从断点列表窗口   ● 选中欲删除的断点并选择加速菜单的Delete BreakPoint项   ● 删除当前所有断点 则选择加速菜单的Delete All BreakPoints项    修改断点属性   断点列表窗口双击选定断点或从加速菜单中选择Edit BreakPoint项 可以打开断点编辑对话框 用于显示和修改断点的属性   利用断点编辑对话框可以改变断点的位置 设置断点条件   断点条件包括两种 布尔表示式和通过次数   Condition编辑框用于设置布尔表达式条件 如果表达式值为真(或非零)则程序运行在断点处中止 否则调试器将忽略该断点   Pass Count编辑框用于设置通过次数条件 即只有当程序运行在该断点处通过设定次数时程序运行才在该断点处中止 这往往用于对循环体内语句的调试   有一点应引起注意的是 当Condition和Pass Count同时设置时 Pass Count是指满足条件的通过次数 lishixinzhi/Article/program/Delphi/201311/25184

delphi 在创建动态菜单的过程中出现List Index out of bound(1)

List Index out of bound(1)一般都是由于 items 、combobox 等或数组越界造成!你重点查下这方面…

delphi 编程出现list index out of bounds(14),是哪里出错了? 谢谢!

访问不存在的下标

delphi调试总是报错 list index out of bounds(0),高手帮忙看看

if (lst1.Count =1)and (lst1.Strings[0]=ss ) then分开写;if lst1.Count =1 then if lst1.Strings[0]=ss then

在delphi 中excel 导入数据库时出现 list index out of bounds(1) 问题 是怎么回事?

比方说你的数据库的变量只由5个,它下标是从0-4,而你导入到excel的时候比方你设置的变量是1-5,那么势必是出现这样的错误,这个是由于超过了数组界定的范围

delphi 报错list index out of bounds delphi 为什么啊

helubo0573回答的正确Close; <<<<<=================这里最好也添加一句;sql.clear;sql.add( "select count(出仓单号) from xg100410cc ");Open; <<<==============这里添加一句;s:=fields[0].value;

Delphi 中出现 List index out of bounds (2)

什么是主题,应该DBGrid没有设置列,而程序却对列进行操作,访问不存在的列就出现上面的错误.

delphi报错 list index out of bounds(5)帮忙看看

list index out of bound,索引溢出,什么时候会出现这种情况呢?用DBGRID组件时,你的数据项只有八列,0-7;但你偏偏要访问第九列,会出现这种提示;下拉列表框也是如此,列表框明明只有7个选项,但你要访问第八选项,也会出现这种错误提示.你的dbgrid13.Columns[i].Title.caption,这一句中的I值所指向的列是不是存在呢?检查一下!

delphi 查错 “list index out of bounds”

var FileList: TStrings;function ListFiles(Dir: String):TStrings; //自定义函数,用于取得指定目录下的所有文件名列表var FSearchRec: TSearchRec; FindResult: Integer;begin if Dir[length(Dir)] <>"" then Dir:=Dir+""; FileList :=TStringList.Create; FindResult:=FindFirst(Dir+"*.*",faAnyFile+faDirectory,FSearchRec); try while FindResult = 0 do begin FileList.Add(LowerCase(Dir+FSearchRec.Name)); FindResult:=FindNext(FSearchRec); end; finally FindClose(FSearchRec); end; //FileList.Sorted:=true; end;procedure TForm1.Button1Click(Sender: TObject);var n:integer; filename:string;begin ListFiles("C:Documents and SettingsAll Users「开始」菜单"); for n:=0 to (FileList.Count-1) do begin filename:=FileList.Strings[n]; listbox1.Items.Append(filename); deletefile(filename);//为什么加上这句就会报“list index out of bounds” end; FileList.Free;end;

如何安装Delphi5

第一步:打开安装程序在../Delphi5/install/setup.exe,密码:../Delphi5/password.txt中111-111-1111 / fex1-91x0 。 第二步:开始安装控件,打开升级包在../Delphi5/Delphi升级包/Pack1/下的安装程序,密码同第一步密码相同。 第三步:打开升级包在../Delphi5/Delphi升级包/ADO/先安装“d5ado_upgrade.exe”;再安装“d5adoupdate2.exe”这两个安装时的密码同第一步的密码相同。 第四步:打开控件文件夹../ReportBuild/rbpro5.exe安装时需要密码,是第一个。 第五步:再次打开控件文件夹../woll2woll/1stclassPro_d5.exe安装时需要密码,是第二个。 第六步:最后打开控件文件夹../woll2woll/InfoPower2000Pro_d5c5.exe安装时需要密码,是第一个。以上第五步、第六步的密码都是../Delphi5/控件/woll2woll/sn.txt文件下。

delphi中 Exclude的用法!?

参数:procedure Exclude(var S: Set; I: Ordinal);下边实例取自Delphi XE帮助文档!procedure TOptionsForm.btShowMessageClick(Sender: TObject);begin //Creates a Message Dialog with the Selected Buttons. MessageDlg("Hello World!", mtInformation, FMsgButtons, 0);end;procedure TOptionsForm.CheckBoxClick(Sender: TObject);begin { Check wether an option is selected and add an element into a set, or exclude it from the set. } if cbYes.Checked then Include(FMsgButtons, mbYes) else Exclude(FMsgButtons, mbYes); if cbNo.Checked then Include(FMsgButtons, mbNo) else Exclude(FMsgButtons, mbNo); if cbCancel.Checked then Include(FMsgButtons, mbCancel) else Exclude(FMsgButtons, mbCancel);end;

delphi中树控件中,怎样展开当前项?

if assigned(TreeView1.selected) then TreeView1.selected.expanded:=True;

哪些ERP是DELPHI写的

起动我公司的ERP是用dephi写的。

Delphi中怎么得到随机数?

楼上正解.

谁知道Delphi报表控件最好的是什么?能够设计表头比较复杂的、表格中分类细致的控件,急用。

我也不知道的!

delphi 中filter 和filtered 是用来干什么的

查询语句的特例,方便编程时操作时用的。一般用Query语句可达到相同的效果。filter表示过滤条件,filtered表示使能过滤。

DELPHI内如何判断输入的数据是否是数字、字母或汉字!急!!!!!

functionStrToSet(mStr:string):TSysCharSet;varI:Integer;beginResult:=[];forI:=1toLength(mStr)doInclude(Result,mStr[I]);end;{StrToSet}procedureTForm1.Button1Click(Sender:TObject);varE:Extended;I:Integer;beginifTryStrToInt(Edit1.Text,I)thenShowMessage("整数")elseifTryStrToFloat(Edit1.Text,E)thenShowMessage("浮点数")elseifLength(WideString(Edit1.Text))<>Length(Edit1.Text)thenShowMessage("有汉字")elseifStrToSet(Edit1.Text)<=["a".."z","A".."Z"]thenShowMessage("全部是字母")elseShowMessage("其他情况");end;查看原帖>>

delphi中怎么判断一个窗口是否已经打开

if not Assigned(SysLocalSetFrm) then begin Application.CreateForm(TSysLocalSetFrm,SysLocalSetFrm); end;

请教Delphi下如何枚举系统当前可用的串口

comm那个控件就能自动检索啊

delphi中如何判断 variant 变量有没有释放

if assign(cs) then cs := nil;

请问,用Delphi编程时,怎样使编写的过程在整个工程通用?

unit Unit1声明:interfaceprocedure suiword;procedure tform1.suiword;beginif dxt="一" then Ln:="1";if dxt="乙" then Ln:="1";if dxt="又" then Ln:="2";if dxt="人" then Ln:="2";if dxt="口" then Ln:="3";if dxt="工" then Ln:="3";if dxt="公" then Ln:="4";if dxt="孔" then Ln:="4";end;unit Unit2;implementation{$R *.dfm}uses Unit1;procedure TForm1.FormCreate(Sender: TObject);begin form1.suiword;end;

我有一段delphi代码,请高手能给我详细的解释,谢谢(争取每句都能翻译成中文)

谷歌翻译结果如下:单位组1;接口使用 窗口,邮件,sysutils的,变体,类,图形,控件,窗体, 对话,数据库,DBTables,网格,DBGrids,StdCtrls,ExtCtrls;类型 TForm1 =类(TForm) RadioGroup1:TRadioGroup; RadioButton1:TRadioButton; RadioButton2:TRadioButton; RadioButton3:TRadioButton; Button1的:TButton; Edit1:t编辑; Label1的:TLabel; DBGrid1:TDBGrid中; DataSource1:TDataSource; 表一:TTable; Table1EmpNo:TIntegerField; Table1LastName:TStringField; Table1FirstName:TStringField; Table1PhoneExt:TStringField; Table1HireDate:TDateTimeField; Table1Salary:TFloatField; Edit2:t编辑; 程序FormCreate(发件人:TObject); 程序RadioButton1Click(发件人:TObject); 程序RadioButton2Click(发件人:TObject); 程序RadioButton3Click(发件人:TObject); 程序Button1Click(发件人:TObject); 私人 ()私人声明 公众 公开声明)( 结束;变种 Form1中:TForm1; 检查时间:数组[1 .. 3]布尔; 明诺,MaxNo:整数;实施($?*. dfm)程序TForm1.FormCreate(发件人:TObject);开始 Edit2.Enabled:=虚假; Table1.Open; Table1.FindLast; MaxNo:= Table1EmpNo.Value; Table1.FindFirst;; 明诺:= Table1EmpNo.Value;结束;程序TForm1.RadioButton1Click(发件人:TObject);开始 RadioButton1.Checked:=真; Showmessage(编号的最大范围为+ inttostr(明诺)+~+ inttostr(MaxNo));结束;程序TForm1.RadioButton2Click(发件人:TObject);开始 RadioButton2.Checked:=真; Showmessage(编号的最大范围为+ inttostr(明诺)+~+ inttostr(MaxNo));结束;程序TForm1.RadioButton3Click(发件人:TObject);开始 RadioButton3.Checked:=真; Edit2.Enabled:=真; Showmessage(编号的最大范围为+ inttostr(明诺)+~+ inttostr(MaxNo)+;请分别输入!);结束;程序TForm1.Button1Click(发件人:TObject);开始 如果(不RadioButton1.Checked)和(不RadioButton2.Checked)和(不RadioButton3.Checked),则 开始 showmessage(请选择查询方式!); 退出; 结束; 然后,如果RadioButton1.Checked 如果Table1.FindKey([Edit1.Text]),则 showmessage(您要查询的记录已找到!)其他 showmessage(对不起,没有您要查询的记录!); 然后,如果RadioButton2.Checked 开始 Table1.FindNearest([Edit1.text]); showmessage(已找到相关记录!); 结束; 然后,如果RadioButton3.Checked 开始 Table1.SetRange([Edit1.Text],[Edit2.Text]); Edit2.Enabled:=虚假; 结束;结束;结束。

delphi 中interface implementation怎么理解?

照我的理解。interface声明了接口部分,它没有运行代码,但包含了其他单元可以访问的类型、常数和变量等。它也描述了该单元中可调用的过程和可使用的数据。implementation后是实现部分,该部分可包含类型声明、变量声明、常数、过程和函数。

数据库表数据显示到listbox的问题delphi

什么叫只要这一步筛选就可以显示出来??with data_M.ADO_gbkm do begin close; sql.Clear; sql.Add("select kmmc from gbgxqkmb,kskmb where gbgxqkmb.kmdm=kskmb.kmdm and bjdm =:bjdm and sjdm =:sjdm"); parameters.ParamByName("bjdm").Value := data_m.ADO_bj.FieldValues["bjdm"]; parameters.ParamByName("sjdm").Value := data_m.ADO_sjd.FieldValues["sjdm"]; open; end;这个是指ado连接并打开,bjdm =:bjdm and sjdm =:sjdm 是指要加进来的参数,parameters.ParamByName("bjdm").Value := data_m.ADO_bj.FieldValues["bjdm"];parameters.ParamByName("sjdm").Value := data_m.ADO_sjd.FieldValues["sjdm"];这个就是参数,其实就是bjdm= data_m.ADO_bj.FieldValues["bjdm"]; listbox1.Items.Add(data_m.ADO_km.FieldValues["kmmc"]); data_m.ADO_km.Next;这个才是显示listview点保存的时候,左边的选择项取出值,然后delete掉,然后右边add

Delphi XE 系列的 TPolygon类型详解

TPolygon就是一个TPointF的动态数组,记录着一系列的坐标, 主要是绘制多边形的

delphi中goto的用法

分类: 电脑/网络 >> 程序设计 >> 其他编程语言 解析: 用goto构成的循环,如下: (注意:标号需要用label先声明才能使用。) program use_goto; {$APPTYPE CONSOLE}uses SysUtils; var i:integer; label outer,loop_start; begin i := 1; loop_start: if (i > 10) then goto outer; writeln(i); inc(i); goto loop_start; outer: readln; end. 运行结果: 1 2 3 4 5 6 7 8 9 10

delphi中goto的用法

用goto构成的循环,如下:(注意:标号需要用label先声明才能使用。)program use_goto;{$APPTYPE CONSOLE}uses SysUtils;var i:integer;label outer,loop_start;begin i := 1;loop_start: if (i > 10) then goto outer; writeln(i); inc(i); goto loop_start;outer: readln;end.运行结果:12345678910

delphi中 image.picture.graphic

我也想知道

在delphi中存入图片,字段名为Graphic,用query组件

可以使用内存流和TBlob添加图片.我这里用的是Access表,Graphic字段类型为OEL物件.单元接口要引用JPEG单元.插入图片:procedure TForm1.Button5Click(Sender: TObject);var MStream : TMemoryStream; FileExt : string;begin if image1.Picture.Graphic <> nil then begin MStream := TMemoryStream.Create; FileExt := ExtractFileExt(Opendialog1.FileName); end; try image1.Picture.Graphic.SaveToStream(MStream); Mstream.Position := 0; adoquery1.Edit; TBlobField(Adoquery1.FieldByName("phote")).LoadFromStream(MStream); if uppercase(fileExt) = ".BMP" then//bmp图片插入 begin Adoquery1.FieldByName("isbmp").Value := 1; ShowMessage("Insert BMP OK!"); end else if (UpperCase(fileExt) = ".JPG") or (UpperCase(FileExt) = ".JPEG") then//JPEG图片格式 begin adoQuery1.FieldByName("isbmp").Value := 0; ShowMessage("Insert jpeg OK!"); end; adoquery1.Post; finally MStream.Free; end;end;读取:procedure TForm1.DBGrid1CellClick(Column: TColumn);var MStream : TMemoryStream; jpeg : TJpegImage;begin try MStream := TMemoryStream.Create; TBlobField(Adoquery1.FieldByName("phote")).SaveToStream(MStream); MStream.Position := 0; if Adoquery1.FieldByName("isbmp").Value = 1 then //琌BMP瓜��Α begin Image1.Picture.Graphic.LoadFromStream(MStream); end else if Adoquery1.FieldByName("isbmp").Value = 0 then begin jpeg := TJpegImage.Create; JPeg.LoadFromStream(MStream); Image1.Picture.Assign(jpeg); FreeAndNil(jpeg); end else Image1.Picture := nil; finally MStream.Free; end;end;

delphi 如何在自动终止线程和手动终止线程时都正确的设置窗体上的控件

感觉是你的线程没写好,不然的话不会出现这种情况。

delphi indy编程 中出现terminate thread timeout

学习……

delphi7中用用 ”Application.Terminate;”退出程序时报错:内存不能读!

procedure Tflogin.okClick(Sender: TObject);begin flogin.Hide; Application.CreateForm(Tfmain, fmain); fmain.Showmodel;//这里用有模的比较好, fmain close 之后 会往下执行的。 flogin.Free; flogin:=nil;end;

在delphi中如何判断线程终止

在Delphi中使用线程,当窗体关闭时,如果窗体中启用了线程,一般需要手动关闭,以释放资源。 常用来结束线程的代码为:thread.Terminate;thread.WaitFor;即先触发Terminate方法,然后等待线程的结束。这种方法要求线程不能使用FreeOnTerminate := True; 否则在WaitFor即将结束的时候会引发“无效句柄”的错误。 这种方法在窗体关闭的时候会等待一段事件(因为WaitFor)。 因此,如果不是在主窗体中结束线程时,其实我们可以不必使用WaitFor。而是采用如下方法: 将FreeOnTerminate := True;这样在窗体关闭的代码中直接调用thread.Terminate; 即可。注意: 如果设置了 thread.OnTerminate := SomeFunction; 那么在调用PcmThrd.Terminate;前尽量将thread.OnTerminate := nil,以免结束线程后SomeFunction中的变量出现空指针错误。当然,这不是绝对的,需要根据具体程序而定 .

delphi等窗口完全显示后执行一段代码

分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题描述: 如题,我有个程序首先是启动页面等主窗口载入之后就退出启动页面进入主窗口但我现在主窗口在会连接网页,此时如果用户的网速慢或网页打不开,启动页面置留的时间就很长请问怎么样可以让主窗口完全显示以后再去连接网页, 解析: 你说的或意思是不是像WORD 启动时效果 巧用Delphi制作溅射屏幕 (作者:施路)精心编写的WINDOWS程序显示启动注意事项,称之为溅射屏幕(splash screen)。利用一点儿小小的内容,即可给程序的显示添加不少色彩。 由于工程本身创建程序的主窗口,且启动溅射屏幕必须在创建主窗口之前出现,所以工程文件必须创建自己的启动屏幕。这意味着用户必须修改源代码来创建工程文件,而这通常在DELPHI编程中是不需要的。下面的过程介绍了溅射屏幕的建立过程。 1、开始一个新的工程。将窗体命名为MainForm,同时将其Caption属性设置为SplashinDemo。把这个工程保存在一个目录中,如C:ProjectsSplashin。把MainForm的单元命名为Main,把工程文件命名为Splashin。 2、在MainForm中插入一个Button组件。将Button的Name属性改为ExitButton,而将其Caption属性改为Exit。为ExitButton的OnClick事件创建一个处理器,在过程的begin和end关键词之间插入Close;语句。 3、选取File|New Form命令,或者单击New Form速度按钮。添加一个新的窗体。 4、将这个窗体的Name属性改变为SplashForm,删除其Caption属性。此外,将其BorderStyle属性改变为bsnone,同时将BorderIcons下的三个子值设置为False。 5、保存这个工程。当Delphi提示读者提供单元文件名时,要确信当前目录为正确的目录。为SplashForm的单元文件名输入Splash。 6、将SplashForm的Enabled属性设置为False。这里不想让用户能够给窗口提供键盘和鼠标命令,这是极少见的情况之一。在这个例子中,我们想让程序对SplashForm的显示拥有完全的控制权。 7、由于窗口没有轮廓,所以从Additional组件类中插入一个Bevel组件对象。这有助于定义窗口的边缘。将Bevel1的Align属性设置为alClient。同时,将对象的Shape属性改变为bsFrame,将其Style属性改变为bsRaised。这些值由使用者来确定。 8、在SplashForm中插入想使用的组件,在这里不要插入任何按钮或者其他相互作用的控件。应用程序本身显示和去除启动溅射对话框。 9、选择Project菜单。高亮显示Splash工程个弹出式菜单。选择Options命令。在所产生的Project Options对话框中,选取Forms页标签。注意,MainForm和SplashForm位于自动创建的窗体列表中。高亮显示每个窗体并单击鼠标右按钮来将其移动到Available窗体。所有的Delphi窗体在运行时都是在内存中自动创建的,这要消耗内存和系统资源。在这样的一个案例中,程序是在运行时创建窗体的,读者应该从自动创建的列表中删除窗体。关闭ProjectOptions窗口。 10、接下来,修改工程的源代码,以便在显示主窗口之前显示溅射对话框。这里需要在工程文件中插入语句,以便与Splash.dpr工程文件相匹配。工程源代码如下: program Project3; uses Forms, main in "main.pas" {MainForm}, splash in "splash.pas" {SplashForm}; {$R *.RES} begin SplashForm:=TSplashForm.Create(Application); SplashForm.Show; SplashForm.Update; Application.CreateForm(TMainForm,MainForm); SplashForm.Close; Application.Run; end. 11、如果这时编译和运行程序,它就非常快速地显示和去除启动溅射对话框,以至用户可能没机会见到它。为了强迫对话框保持几秒钟的可见时间,请选取程序的MainForm。为窗体的OnCreate命令创建一个处理器。在关键词的前面添加一个名为stopTime的长整型变量。在begin和end之间插入两个语句:一个为对Windows GetTickCount函数的调用。来将stopTime设置为Windows已在运行的秒数;另一个语句为while语句,这个语句另外延迟2秒钟。程序清单如下: unit main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TMainForm = class(TForm) Exitbutton: TButton; procedure ExitbuttonClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var MainForm: TMainForm; implementation {$R *.DFM} procedure TMainForm.ExitbuttonClick(Sender: TObject); begin close; end; procedure TMainForm.FormCreate(Sender: TObject); var stopTime:LongInt; begin stopTime:=GetTickCount div 1000; while ((GetTickCount div 1000)<(stopTime+2)) do Sleep(1); end; end. 12、按F9编译、运行程序。

如何在Delphi XE7自定义启动闪屏Splash功能

在主窗口的OnCreate事件的一开始创建一个窗口,该窗口的FormStyle属性设置为fsStayOnTop,上面显示你的版本信息,以非模态的形式显示出来。然后继续在该事件中加载你的程序内容,或者直接搞些延时的代码。在事件的最后,销毁该窗口即可。上面在OnCreate事件中创建的那个窗口,其表现出来的样子就可以作为闪屏Splash窗口。

如何在Delphi XE7自定义启动闪屏Splash功能

第一步,打开Delphi XE7开发环境,选择菜单工具栏中[Project]-->[Options...]进入项目配置。如何在Delphi XE7自定义启动闪屏Splash功能?2第二步,进行项目配置对话框后,首先在左边框中选中[Application]选项。如何在Delphi XE7自定义启动闪屏Splash功能?3第三步,在这个对话框右边的上半部分主要是程序的应用小图标的设置参数,我们可以不用管它先。如何在Delphi XE7自定义启动闪屏Splash功能?4第四步,这时我们必须要选上Include Splash Image,否则移动应用程序启动时就不会有这个splash界面了。如何在Delphi XE7自定义启动闪屏Splash功能?5第五步,选中[Splash tile mode]的下拉框,这是Splash界面中的标题模式, 一般选择不显示标题的。这个选项作一下解释:1. disabled -按图片尺寸大小显示,显示位置有Splash Gravity设置2. clamp - 图形边框适应屏幕大小3. repeat - 屏幕水平,竖立方向重复填充满Splash Image4. mirror - 跟repeat差不多,图片是镜像的。如何在Delphi XE7自定义启动闪屏Splash功能?6第六步,选中[Splash Gravity]的下拉框,这个选项只有当Splash Title Mode为Disable时有效。主要是设置比屏幕小的图片在屏幕中的位置,一般选择居中效果。如何在Delphi XE7自定义启动闪屏Splash功能?7第七步,这时我们就可以看到启动时splash界面的预览界面了,是不是看到了啊!你可以根据需求把图片做得更漂亮,这样启动效果更美艳。如何在Delphi XE7自定义启动闪屏Splash功能?END注意事项必须要选上Include Splash ImageSplash Gravity选项只有当Splash Title Mode为Disable时有效

Delphi深度探索之使用Bold开发数据库应用(1)

介绍   下面我要介绍的Bold for Delphi就是是一套优秀的基于UML模型驱动的面向对象的数据库开发框架 包括了几十个组件组件 以及 个以上的类 可以用来轻松地实现信息模型设计及基于信息模型的的应用程序 基础概念介绍   为了使大家对Bold for Delphi整个框架的使用有一个大概的了解 下面将演示如何用UML设计一个简单的模型并用Bold来完成 并包括如何用Bold快速实现一个简单的操作界面   自打我和我老婆认识以后 就染上了她的臭毛病 比较喜欢乱花钱 没有节制 结果搞的自己常常是挣的不如花的多 老要借外债 后来痛定思痛 决定要对每月收支情况做预算 严格控制费用支出 为此写了还写了好多的财务小程序 下面要讲的这个例子程序就是一个常见的家庭小账本程序 它可以用来统计家庭中的收支情况 软件的功能要求如下   可以定义家庭中的各个人员的信息   可以输入收支情况 并同消费的人员关联起来   给出一定时期内消费的情况统计 作为未来家庭预算的依据 建立信息模型   在产品的需求分析阶段 我们首先要建立数据库程序的信息模型 一般来说信息模型主要是指基于ER图的实体关系模型 这是因为我们使用的数据库大部分都是关系型数据库 虽然有些数据库 比如Oracle有面向对象的特性 但不是很完善 一般很少使用 而关系型数据库有一个很大的问题就是无法直观的体现面向对象的思想 关系型的ER模型能够清晰地描述业务域的静态的数据视图 但你无法从模型获取实体的操作及其相互之间的交互 同时 也很难在关系型数据库中简单地实现继承 重载 多态等等面向对象的技术 因此现代数据库开发方法所提倡的面向对象的编程思想无法简单 清晰 平滑地映射为关系型数据库中的表结构   统一建模语言(UML)是一种以可视化的方式建立软件系统框架 并进行文档化的语言 UML语言是对当今软件工程领域成熟设计实践的一个总结 并且已经被实践证明是可以成功地描述大型的复杂系统的 目前国内很多的大型公司已经开始在软件开发过程中使用UML作为一种标准的信息模型设计语言了 Bold for Delphi就是基于UML的 它内置了一套自己的UML建模工具 当然我们也可以使用Rose或者ModelMaker来进行UML设计   面向对象的UML类图则可以说是对ER模型的一个扩展 它对实体之间的关系以及相互之间的作用也进行了描述 ER模型只是对要进行保存的数据进行的模型化 而类图则包括了全部的类实体的属性以及它们的操作和相互作用 它可以使我们对业务域问题有一个更精确的视图 通过使用各种类图技术可以更容易地 也更快速地建立正确的软件系统   基于Bold for Delphi的数据库开发革命性的一点就是允许我们直接把基于UML的类图映射为关系型数据库的存储 而无须手工的通过代码进行转换 要注意一点的是 Bold同其它建模工具如Together ModelMaker不同 它生成框架代码时只使用了UML中的类图 而Together等可以利用UML图中的类图 协作图等其它UML元素来生成代码框架 但是Together不负责生成对象模型对应的关系数据库模型 类模型   下面的这个类图就是我们的账本程序的一个简单类图   图中显示了两个类 人员信息类 Person 以及账目信息类AcctItem 人员类和账目类之间的连线描述了两个类之间的关系 关系包括一个标题PayAssoc揭示了两者之间的关系是支付的关系 每个属性 PayPerson 和 Pay 以及关系多重度因子 和 n 表明每个人可以完成多个账目的收支 而每个账目至少要有一个关联的人员 同时类图还描述了下面一些业务规则   一个人的信息要有名称   账目信息中包含收支金额大小 以及发生日期   上面的类图如果使用关系型数据库来实现的话 需要建立主从表 并将人员和账目之间的关联约束通过应用程序代码强制一些运行逻辑来完成 这时通常要通过补充详细的文档来描述需要强制的业务逻辑 如果没有详细的设计文档 实现代码时就很容易遗漏某些重要的商业规则 同时这些文档在整个的数据库开发的生命周期里面都需要人来手工地维护 难免会出现文档和模型不匹配的错误 而且文档的工作量比较大 而程序员数量又相对不足的话 程序员会觉得既要写代码又要写文档 无形中增加了很多工作量 难免会有抵触情绪 这些都会影响工作的效率   对于这样的问题 Bold则通过精确描述信息模型 无须详细规则描述文档可以将模型自动的转变为实现代码 商业规则在整个数据库开发生命周期内由Bold的类来维护 减少了文档的工作量和出错的可能 建立示例程序   首先 我们要安装Bold for Delphi Bold的一个月评估版可以从 boldsoft 获取 同时D 的架构版内置了Bold 这里我就不详细介绍申请和安装的过程了 安装好后Bold会在IDE的组件面板中添加很多组件 接下来我们就开始建立使用Bold的Delphi程序了    在Delphi中选File|New Application创建一个新的应用程序    保存窗体文件为MainForm pas保存工程文件为CMoney dpr    添加一个数据模块 设定数据模块的名字为DmMoney    将数据模块保存为CDataModule pas   为了使用Bold来建立系统的信息模型 要进行下列操作    从Bold Handles 组件页上选择BoldModal(命名为bmMoney) BoldSystemTypeInfoHandle(命名为bsthMoney)和BoldSystemHandle(命名为bshMoney)到数据模块中    设定bsthMoney的BoldModal属性为bmMoney    设定bshMoney的BoldSystemTypeInfoHandle 属性为bsthMoney   其中BoldModel组件将被用来保存模型 即类 类的关系 约束以及类型等 这些信息将在设计时作为字符串保存到Delphi的窗体和数据模块文件中 在运行时Bold将执行一些模型的中间转换过程 将模型转化为BoldSystemTypeInfoHandle控件所使用的格式 并选择实现可持续性的机制   在设计时储存在BoldModel组件中的信息模型可以被看做元数据 就象数据库的库表和字段结构一样的信息 而BoldSystemTypeInfoHandle组件则保存BoldSystemHandle所需要的运行时信息 这些信息是对UML模型的一种运行时的表达 这个组件是其他Bold组件的信息源   BoldSystemHandle组件则被用来表达整个系统的业务域元素 可以理解为对象空间 通过对象空间我们可以在运行时获得设计时元数据表达的对象的运行实例 目前用到的三个控件已经可以很好的应用在不需要保存数据的环境中了 但账目记录这类数据库程序必须要保存用户输入的信息 因此还需要添加支持数据可持久性的控件 这里为了快速演示的需要 我们使用XML文件作为存储介质 接下来要添加XML可持续控件到数据模块中    从Bold Persistence组件页上选择BoldPersistenceHandleFileXML控件(命名为bphxMoeny)添加到数据模块中    设定组件的BoldModel属性为bmMoney控件    设定bshMoney组件的PersistenceHandle属性为bphxMoeny组件   现在组件关系示意图如下   BoldPersistenceHandleFileXML组件将使我们的程序可以使用XML文件来保存和读取对象 这是一个使用很方便的控件 特别是在快速原型设计期间 因为在原型设计期间 模型经常会被改动 而重新生成数据库表是很费时间的 而XML文件可以使我们非常快的变更我们的模型设计 当模型基本稳定后 可以去掉这个控件 转而切换为其他使用关系型数据库进行存储的可持续性控件 这样的开发方式可以使我们不需要改动整个程序就能很容易地改变数据持续层的存储策略 也就是前面所说的 数据库平台无关设计   除了前面的一些基本的属性设置外 我们还要设定下列控件属性 组件 属性 值 说明 bsthMoney UseGeneratedCode false 是否使用bold生成类代码 这里暂时先不使用 稍后我们会进一步介绍 bphxMoeny FileName Data xml 指定保存数据的xml文件名 bshMoney AutoActivate true 告诉Bold控件在程序运行后马上打开xml文件用于数据存储 建立模型   下面的步骤是建立我们的模型 Bold for Delphi内置了一个树形的UML建模工具(应该说Bold美中不足的一点就是没有提供象Visio和Rose那样基于拖放的模型设计界面) 我们可以双击BoldModel(bmMoney)组件调出模型设计工具 bold UML模型编辑器(见下图)包含了应用程序模型信息 数据类型信息和关系数据库映射信息   模型编辑器支持下列实体类型   Model: 模型 全部业务域实体集合   Package: 包 整个模型的一个子集所包含的实体 可以将大模型分解为小模型来减少系统复杂度   Class:类 类似于Delphi的类的概念(Delphi的类可以从UML的类来生成) 但包含Object Pascal无法直接描述的类的信息和相互关系 Bold框架通过关联类和特殊的列表类封装了一些额外的功能使得我们可以很容易的处理复杂的类关系   Attribute: 属性 类似于Delphi中的property概念 然而在Bold中 这些属性可以在模型中直接保存而无需我们编写属性的Get Set方法   Operation: 操作 等价于Delphi中的类的过程和函数   Association: 关联 代表了类之间的关系 关联可以使用类来表达 关联也可以有操作和属性 在Bold中建立关联的复杂工作同样可以由框架来实现 我们无须编写代码来完成   Role: 角色 代表关联同类的连接   Data Type: 表示模型所支持的不同数据类型 它可以被扩展以支持用户自定义的数据类型   下图是不同实体类型在模型编辑器中是如何标识的   所有的实体类型都可以通过编辑器的右键菜单来创建和修改属性 同时我们选中实体节点后 实体和全局的选项会显示在右侧的编辑器中 其中重要的有   Name: 模型的名称 lishixinzhi/Article/program/Delphi/201311/24785

delphi 使用UDP发送结构体问题

SendStruct = recordASize: Integer; Name: array[0..0] of ansichar; end;你这样定义结构后,你就不能用new来分配内存了,因为用new长度就算不对了,所以要用getmem,自己算要分配的长度。比如下面:var p:PSendStruct; s:string; len:Integer;begin s:="hello"; len:=sizeof(TSendStruct)+length(s); getMem(p,len); FillChar(p^,len,0); p^.ASize:=len; move(s[1],p^.Name,length(s)); //self.Caption:=pchar(@p^.Name); IdUDPClient1.SendBuffer(p^, len); freeMem(p);end;接收的时候类似,也用getmem分配。udp发送的数据包大小是有限制的(好象1024字节),所以如果你的数据包大过这个限制,你还得自己分包。另外,定义网络发送的结构,最好加上packed关键字,结构会小不少。比如:SendStruct =packed recordASize: Integer; Name: array[0..0] of ansichar; end;

Philadelphia 歌词

歌曲名:Philadelphia歌手:Parachute专辑:The Way It Was〖Philadelphia〗〖Parachute〗〖The Way It Was〗〖Lyric Edited By MichaelG〗Like a gunshot from miles awayShe"s moving inLike a rainstorm without the cloudsShe falls on youLike a phone call to warn the truthIt never ringsIt"s the truth before the liesIt"s the way she doesn"t tryIt"s the wink before the slyIn PhiladelphiaIn PhiladelphiaThey met after work one dayShe laughed with himThey drove off their separate waysThen met for drinksWhen he got home the silent guilt was deafeningIt"s the truth before the liesIt"s the way she doesn"t tryIt"s the wink before the slyIn PhiladelphiaIn PhiladelphiaShe thought that love was gonna fightShe thought that love was gonna take her homeShe thought that love was gonna save herBut love just never showedShe felt that love was always watchingOh, we learned that love was supposed to waitBut sometimes it"s the feelingsThat are standing in the airHe slips off his worn-out suit and tries to restShe"s a million miles away across the bankShe rolls over, puts her head across his chestIt"s the truth before the liesIt"s the way she doesn"t tryIt"s the wink before the slyIn PhiladelphiaIn PhiladelphiaIn PhiladelphiaoooooooohooooooooooooohoooooThe Endhttp://music.baidu.com/song/18845675

如何在命令行上编译我的delphi项目

Borland出品的Delphi,有着闪电般的编译速度,但是在界面控件使用较多、工程项目较大的时候,编译一个工程仍需要一段时间,打开庞大的Delphi IDE,也需要时间。其实,在一个工程开发结束,调试完成之后的Release编译,完全可以用命令行来执行,因为Delphi的编译器参数不像C++编译器那样复杂。笔者把Delphi联机手册中关于命令行编译(command-line compiler)的几篇主题作了翻译,希望对Delphi开发人员有帮助。目录1. Command-line compiler命令行编译器2. Command-line compiler options命令行编译器选项3. Compiler directive options编译器指令选项4. Compiler mode options编译模式选项5. DCC32.CFG file编译器配置文件DCC32.CFG6. Debug options调试选项7. Directory options目录选项8. IDE command-line optionsIDE命令行选项9. Generated files几个IDE自动生成的文件介绍Command-line compiler命令行编译器Delphi"s command-line compiler (dcc32.EXE) lets you invoke all the functions of the IDE compiler (DELPHI32.EXE) from the DOS command line (see IDE command-line options. Run the command-line compiler from the DOS prompt using the syntax:Delphi"s命令行编译器(dcc32.exe)允许你从DOS命令行方式(参照:IDE命令行选项)实现IDE编译器(delphi32.exe)的所有功能。用DOS命令运行命令行编译器语法如下:dcc32 [options] filename [options]dcc32 [选项] [文件名] [选项]where options are zero or more parameters that provide information to the compiler and filename is the name of the source file to compile. If you type dcc32 alone, it displays a help screen of command-line options and syntax.零或多个参数给编译器提供信息,文件名指定需要编译的源文件名。如果你单独输入dcc32,它会显示一个关于命令行编译的选项和语法的屏幕。If filename does not have an extension, the command-line compiler assumes .dpr, then .pas, if no .dpr is found. If the file you"re compiling to doesn"t have an extension, you must append a period (.) to the end of the filename.如果文件名没有扩展名,命令行编译器会查找扩展名为.dpr的同名文件,如果找不到,则查找扩展名为.pas的同名文件。如果你的源文件确实没有扩展名,你需要在文件名的末尾添加(.)。If the source text contained in filename is a program, the compiler creates an executable file named filename.EXE. If filename contains a library, the compiler creates a file named filename.DLL. If filename contains a package, the compiler creates a file named filename.BPL. If filename contains a unit, the compiler creates a unit file named filename.dcu.如果指定的源文件是一个工程文件,编译器会创建一个扩展名为.EXE的同名可执行文件。如果指定的源文件是一个库文件,编译器创建一个扩展名为.DLL的同名动态链接库文件。如果指定的源文件是一个包文件,编译器会创建一个扩展名为.BPL的同名包。如果指定的源文件是一个单元文件,编译器会创建一个扩展名为.dcu的目标代码文件。You can specify a number of options for the command-line compiler. An option consists of a slash (/) or immediately followed by an option letter. In some cases, the option letter is followed by additional information, such as a number, a symbol, or a directory name. Options can be given in any order and can come before or after the file name.你可以为命令行编译器指定多个参数。一个参数包含一个破折号“-”(或“/”)和紧跟着的一个选项字符构成。通常情况下,选项字符后面会跟一些附加的信息,如一个数字、一个符号、一个目录等。选项可以是任意顺序并且可以在源文件名前面或后面。Command-line compiler options命令行编译选项The IDE lets you set various options through the menus; the command-line compiler gives you access to these options using the slash (/) delimiter. You can also precede options with a hyphen (-) instead of a slash (/), but those options that start with a hyphen must be separated by blanks. For example, the following two command lines are equivalent and legal:IDE允许你使用菜单来设置各种编译选项,而命令行编译器允许你使用字符“/”作为分隔符来设定这些编译选项。你也可以使用连字符“-”来代替“/”,但是用“-”引出的参数之间必须用空格隔开。例如,下面两个命令都是等同的也是合法的:DCC -IC:/DELPHI -DDEBUG SORTNAME -$R- -$U+DCC /IC:/DELPHI/DDEBUG SORTNAME /$R-/$U+The first command line uses hyphens with at least one blank separating options. The second uses slashes and no separation is needed.第一个编译命令用“-”引出参数,且参数之间有多个空格分隔。第二个编译命令用“/”引出参数,参数之间不必要分隔。The following table lists the command-line options. In addition to the listed options, all single-letter compiler directives can be specified on the command line, as described in Compiler directive options.下列表中列出所有的命令行参数。在附加的选项列表中,所有的单字符编译器指令都可以在命令行编译中使用,详情请参照:编译器指令。Option Description选项 描述Aunit=alias 设置单元别名B 编译所有单元CC 编译控制台程序CG 编译图形界面程序Ddefines 编译条件符号定义Epath 可执行文件输出路径Foffset 查找运行期间错误GD 生成完整.Map文件GP 生成.Map文件Public段GS 生成.Map文件Segment段H 输出提示信息Ipaths 文件包含路径J 生成.Obj目标文件JP 生成C++类型.Obj目标文件Kaddress Set image base addressLEpath 包.BPL文件输出路径LNpath .dcp文件输出路径LUpackage 使用运行期间包列表M 编译有改动的源文件Npath dcu/dpu文件输出目录Opaths .Obj文件(汇编目标代码文件)路径P 按8.3格式文件名查找Q 安静模式Rpaths 资源文件(.RES)路径TXext 目标文件扩展名Upaths 单元文件路径V 为Turbo Debugger生成调试信息文件VN 以.Giant格式生成包含命名空间的调试信息文件(将用于C++Builder)VR 生成调试信息文件.rsmW 输出警告信息Z Disable implicit compilation$directive Compiler directives--Help 显示编译选项的帮助。同样的,如果你在命令行单独输入dcc32,也会显示编译选项的帮助。--version 显示产品名称和版本Compiler directive options编译器指令选项Delphi supports the compiler directives described in Compiler directives. The $ and D command-line options allow you to change the default states of most compiler directives. Using $ and D on the command line is equivalent to inserting the corresponding compiler directive at the beginning of each source file compiled.Delphi支持用编译器指令关键字描述的编译器指令。使用“$”和“D”命令行选项可以改变所有的默认编译器状态。用“$”和“D”命令行选项等同于在源文件的前面添加编译器指令。Switch directive option编译器指令选项开关The $ option lets you change the default state of all of the switch directives. The syntax of a switch directive option is $ followed by the directive letter, followed by a plus (+) or a minus (-). For example:“$”允许你改变每一种编译器指令默认状态。编译器指令的语法是“$”后紧跟一个指令字符,再跟一个“-”或“+”。例如:dcc32 MYSTUFF -$R-compiles MYSTUFF.pas with range-checking turned off, while:不使用边界检查编译MYSTUFF.pas单元:dcc32 MYSTUFF -$R+compiles it with range checking turned on. Note that if a {$R+} or {$R-} compiler directive appears in the source text, it overrides the -$R command-line option.使用界面检查编译MYSTUFF.pas单元。如果将编译器指令{$R+}或{$R-}添加到源文件的开始,它将覆盖从命令行传入的参数。You can repeat the -$ option in order to specify multiple compiler directives:你可以用多个“$”来指定多个编译器指令,如:dcc32 MYSTUFF -$R--$I--$V--$U+Alternately, the command-line compiler lets you write a list of directives (except for $M), separated by commas:命令行编译器允许作用逗号分隔的编译器指定列表,如:dcc32 MYSTUFF -$R-,I-,V-,U+只需要用一个“$”符号。Only one dollar sign ($) is needed.注意,因为$M的格式不一样,你不能在逗号分隔的指令列表中使用$MNote that, because of its format, you cannot use the $M directive in a list of directives separated by commas.Conditional defines option条件编译选项The -D option lets you define conditional symbols, corresponding to the {$DEFINE symbol} compiler directive. The -D option must be followed by one or more conditional symbols separated by semicolons (;). For example, the following command line:“-D”选项允许你定义一个编译条件,符合你用{$DEFINE symbol}定义的编译器指令。“-D”选项后必须跟随一或多个用分号分隔的编译条件符号,如下命令:dcc32 MYSTUFF -DIOCHECK;DEBUG;LISTdefines three conditional symbols, iocheck, debug, and list, for the compilation of MYSTUFF.pas. This is equivalent to inserting:定义了三个编译条件符号:IOCHECK,DEBUG,LIST,用于MYSTUFF.pas单元中。这等同于在源文件中插入以下语句:{$DEFINE IOCHECK}{$DEFINE DEBUG}{$DEFINE LIST}如果你指定了多个“-D”选项,你可以联接它们,如下:dcc32 MYSTUFF -DIOCHECK-DDEBUG-DLIST等同于第一个例子。编译模式选项有几个选项能影响编译器自身的功能。像其它选项一个,你可以使用“/”或“-”的格式。别忘了用至少一个空格分隔这些选项。选项(-M)命令行编译器使用构造逻辑的方式来维护工程。“-M”选项指示编译器检查所有与编译文件相关联的文件。用这个参数会导致编译时间增大。一个源文件在下列情况下会重新编译:The source file for that unit has been modified since the unit file was created.源文件被创建以来被修改过;用“$I”指令包含的任何文件,用“$L”包含的任何.Obj文件,或用“$R”关联的任何资源文件.Res,比源文件中的要新;单元接口部分interface的uses段有改动。在单元编译时指令“-Z”在构造逻辑期不被接受。If you were applying this option to the previous example, the command would be:如果你在上一个例子中使用这个指令,编译命令就应该是:dcc32 MYSTUFF -M编译所有 选项(-B)用于取代要知道哪些单元需要更新-M的选项,你可以使用-B选项来更新所有你的程序中关联的单元。你不能在程序中同时使用-M和-B。选项-B比-M速度更慢,而且它并不是必需的。如果你在前一个例子中使用这个参数,编译命令就应该是:dcc32 MYSTUFF -B查找错误 选项(-F)当一个程序由于运行期间错误而终止时,它会显示一个错误号和错误地址在错误发生时。用-Faddress选项来指定错误地址,你在源文件中能找到引发错误的位置,如果你的程序和单元编译时附加了调试信息(使用$D编译器指令)。为了命令行编译器能用-F选项查找运行期间错误,你必须传递与第一次编译时相同的指令列表。先前提到过,你的程序和单元必须启用调试信息,命令行编译器才能查找运行期间错误。默认情况下,所有的程序和单都是启用调试信息的,除非你用{-D}或-$D-指令关闭它,这样,命令行编译器就不能查找运行期间错误了。使用包(-LU)选项使用-LU选项来在编译时添加你应用程序中要用到的运行期间包。运行期间包已经在“工程选项”对话框中列举的,不必再在命令行中添加。Disable implicit compilation (-Z) option(此选项在delphi6.0/7.0中有不同描述,在此不作翻译)目标文件扩展名(-TX)选项选项-TX允许你改写默认的输出文件扩展名。例如:dcc32 MYSTUFF -TXSYS生成的将是一个叫做MYSTUFF.SYS的文件。Quiet (-Q) option安静模式(-Q)选项安静模式选项禁止在编译时显示文件名及代码行数,如果命令行编译器调用这个选项的话。它的输出仅限于起始时行版权信息以及结尾的统计信息。当然,如果发生错误,它也会输出。DCC32.CFG fileDCC32.CFG配置文件你可以设置一个编译选项列表到一个叫做DCC32.CFG的配置文件中,它将用于编译时附加到命令行参数后。配置文件的每一行都相当于一个额外的命令行参数插入到实际的命令行参数前(注意,是实际参数前)。因而,你可以使用这个配置文件改变一些命令行参数的默认设置。命令行编译器允许你输入相同的命令行参数,它将忽略所有除最后一个之外。这个的话,尽管通过配置文件你可以改变一些设置,你仍然可以覆盖它使用命令行参数。当dcc32启动时,它查找DCC32.CFG文件在当前目录。如果文件没有找到,dcc32会查找它所在的目录。以下是一个DCC32.CFG配置文件的例子,定义了关于文件包含、OBJ文件包含、单元文件搜索路径信息,并改变了编译器指令$O和$R的默认值。-IC:/DELPHI/INC;C:/DELPHI/SRC-OC:/DELPHI/ASM-UC:/DELPHI/UNITS-$R+-$O-现在,如果你输入:dcc32 MYSTUFF编译器把它当作你输入如下命令:dcc32 -IC:/DELPHI/INC;C:/DELPHI/SRC -OC:/DELPHI/ASM -UC:/DELPHI/UNITS -$R+ -$O- MYSTUFF调试选项编译器有两个命令行参数可以生成外部调试信息:MAP文件选项和调试信息选项。Map file (-G) optionsMap文件(-G)选项选项-G指示命令行编译器生成一个.map文件来查看一个可执行文件的布局。不同于可二进制的可执行文件和.dcu文件,.map文件是一个可读的文本文件,可以被打印或是其它文本编辑器编辑。选项-G后必须跟字符S、P或D,去决定你想要在.map文件列出的信息。一个.MAP文件被分成三个节:SegmentPublicsLine Numbers-GS选项只输出Segment Section,-GS选项输出Segment和Publics,-GD输出所有的三个Sections.-GD选项也生成一个扩展名为.DRC的文件包含所有的用resourcestring关键字声明的字符串常量。用默认的编译选项{$D+,L+}编译模块(程序或单元),Publics Section列举所有的全局变量、过程和函数,Line Numbers Section列举模块中所有的过程和函数的行号。如果用{$D+,L-}编译选项编译模块,Publics Section中仅列举在单元的interface部分定义的符号。如果用{$D-}选项编译模块,在Line Numbers Section没有任何入口。调度选项(-V)选项-V、-VN、-VR会指示编译器生成调试信息,它们能在命令行中组合使用。生成Turbo Debugger使用的调试信息的选项(-V)当你在命令行中使用-V选项时,编译器会在可执行文件的末尾附加与Turbo Debugger5.0一致的外部调试信息。Turbo Debugger包含代码和硬件级别的强大的断点。虽然附加调试信息到查执行文件中会使可执行文件增大,但是它并不影响实际可执行文件中的可执行代码,也不需要额外的内存来启动程序。

Delphi 图像比例缩放问题 高手来啊

图像缩放自己分解里面的意思, 其实非常简单, 会屏幕截图就会做这个。

Delphi 图像比例缩放问题 高手来啊

非常简单第一个错误是你的单元引用错误应该是 uses Wincodec;第二个错误是没有对IWI图像进行关联在 Factory.CreateBitmapScaler(Scaler);上面加一句Factory := WicImg.ImagingFactory;

求delphi7.0的序列号

s/n: 6AKD-PD29Q9-RDF?JQ-HQNZ key: D?X-BTC

DELPHI中INI文件的配置问题

分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题描述: 配置一个INI文件 在窗体打开时能显示某某同学你好 的字样.请问,INI文件应该怎么写,在DELPHI里调用INI文件的代码在哪写,怎么写?希望各位高手能写个例子出来,能写的详细点,小弟非常感谢~!~ 解析: unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; MyIniFile: TInifile; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var FileName: string; tString: string; begin Filename := ExtractFilePath(ParamStr(0)) + "System.ini"; tString := MyIniFile.ReadString("SystemPath","AppPath","None"); if tString = "None" then begin MyInifile.writestring("SystemPath","AppPath",ExtractFilePath(ParamStr(0))); end; end; procedure TForm1.Button2Click(Sender: TObject); var tString: String; begin tString := MyIniFile.ReadString("SystemPath","AppPath","None"); messagebox(Handle, pchar(tstring),"我的INI",mb_yesno); end; procedure TForm1.FormCreate(Sender: TObject); begin MyInifile := TInifile.Create("System.ini"); end; procedure TForm1.FormDestroy(Sender: TObject); begin MyInifile := Nil; MyInifile.Free; end; end. 你看下吧,这个是我从前做过的例子,如果想要源码的话,可以留下E-Mail我发给你。

DELPHI 数据类型

稀奇

请教delphi编程问题 如果78501= VKssnIt8GPF+rkkVDSt/Am 那么67

当前路径:WindowsFormsApplication6/Form1.resx ufeff<?xml version="1.0" encoding="utf-8"?> 2 <root> 3 <!-- 4 Microsoft ResX Schema 5 6 Version 2.0 7 8 The primary goals of this format is to allow a simple XML format 9 that is mostly human readable. The generation and parsing of the 10 various data types are done through the TypeConverter classes 11 associated with the data types. 12 13 Example: 14 15 ... ado.net/XML headers & schema ... 16 <resheader name="resmimetype">text/microsoft-resx</resheader> 17 <resheader name="version">2.0</resheader> 18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> 19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> 20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> 21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> 22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> 23 <value>[base64 mime encoded serialized .NET Framework object]</value> 24 </data> 25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> 26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> 27 <comment>This is a comment</comment> 28 </data> 29 30 There are any number of "resheader" rows that contain simple 31 name/value pairs. 32 33 Each data row contains a name, and value. The row also contains a 34 type or mimetype. Type corresponds to a .NET class that support 35 text/value conversion through the TypeConverter architecture. 36 Classes that don"t support this are serialized and stored with the 37 mimetype set. 38 39 The mimetype is used for serialized objects, and tells the 40 ResXResourceReader how to depersist the object. This is currently not 41 extensible. For a given mimetype the value must be set accordingly: 42 43 Note - application/x-microsoft.net.object.binary.base64 is the format 44 that the ResXResourceWriter will generate, however the reader can 45 read any of the formats listed below. 46 47 mimetype: application/x-microsoft.net.object.binary.base64 48 value : The object must be serialized with 49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 50 : and then encoded with base64 encoding. 51 52 mimetype: application/x-microsoft.net.object.soap.base64 53 value : The object must be serialized with 54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter 55 : and then encoded with base64 encoding. 56 57 mimetype: application/x-microsoft.net.object.bytearray.base64 58 value : The object must be serialized into a byte array 59 : using a System.ComponentModel.TypeConverter 60 : and then encoded with base64 encoding. 61 --> 62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> 64 <xsd:element name="root" msdata:IsDataSet="true"> 65 <xsd:complexType> 66 <xsd:choice maxOccurs="unbounded"> 67 <xsd:element name="metadata"> 68 <xsd:complexType> 69 <xsd:sequence> 70 <xsd:element name="value" type="xsd:string" minOccurs="0" /> 71 </xsd:sequence> 72 <xsd:attribute name="name" use="required" type="xsd:string" /> 73 <xsd:attribute name="type" type="xsd:string" /> 74 <xsd:attribute name="mimetype" type="xsd:string" /> 75 <xsd:attribute ref="xml:space" /> 76 </xsd:complexType> 77 </xsd:element> 78 <xsd:element name="assembly"> 79 <xsd:complexType> 80 <xsd:attribute name="alias" type="xsd:string" /> 81 <xsd:attribute name="name" type="xsd:string" /> 82 </xsd:complexType> 83 </xsd:element> 84 <xsd:element name="data"> 85 <xsd:complexType> 86 <xsd:sequence> 87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> 88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> 89 </xsd:sequence> 90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> 91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> 92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> 93 <xsd:attribute ref="xml:space" /> 94 </xsd:complexType> 95 </xsd:element> 96 <xsd:element name="resheader"> 97 <xsd:complexType> 98 <xsd:sequence> 99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> 100 </xsd:sequence> 101 <xsd:attribute name="name" type="xsd:string" use="required" /> 102 </xsd:complexType> 103 </xsd:element> 104 </xsd:choice> 105 </xsd:complexType> 106 </xsd:element> 107 </xsd:schema> 108 <resheader name="resmimetype"> 109 <value>text/microsoft-resx</value> 110 </resheader> 111 <resheader name="version"> 112 <value>2.0</value> 113 </resheader> 114 <resheader name="reader"> 115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 116 </resheader> 117 <resheader name="writer"> 118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> 119 </resheader> 120 <metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 121 <value>371, 6</value> 122 </metadata> 123 <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 124 <data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> 125 <value> 126 AAABAAEAHx8AAAEAIACoDwAAFgAAACgAAAAfAAAAPgAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAA 127 AAAAAAAAAAAAAAAAAAwAAAAkAAAAMAAAADAAAAAwAAAAMFZiXYBhhIrLbEoogQYDAjIAAAAwAAAAMAAA 128 ADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAA 129 ADAAAAAlAAAAAAAAAAAAAAAkAAAAawAAAI8AAACPAAAAjyIYDaBIlrTpOMb//0+OsvQ0LSyxAAAAjwAA 130 AI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAA 131 AI8AAACPAAAAcAAAAAAAAAAAAAAAMAAAAI8AAAC/AAAAvwsGAcNMSk/lPqL8/zqn//85mv//OGe37wwS 132 IscAAAC/AAAAvwAAAL8AAAC/AAAAvwAAAL8AAAC/AAAAvwAAAL8AAAC/AAAAvwAAAL8AAAC/AAAAvwAA 133 AL8AAAC/AAAAvwAAAJUAAAAAPKzy/zys8v88rPL/PKzy/zys8v9QmML/UWGh/y5p9v84cvf/OXX5/zV5 134 //86kfj/Pavw/zys8v88rPL/PKzy/zys8v8+q+//S57Q/0Kg3/88rPL/PKzy/zys8v88rPL/PKzy/zys 135 8v88rPL/PKzy/wkaJMcAAACVAAAAADys8v88rPL/PKzy/zys8v89q/D/T3OZ/yEvm/8fOL3/K0vS/zJa 136 5f81afX/NXr9/0qR1P9AqOn/PKzy/zys8v89q/D/ZIuY/2lkd/9KicP/PKzy/zys8v88rPL/PKzy/zys 137 8v88rPL/PKzy/zys8v8JGiTHAAAAlQAAAAA8rPL/PKzy/2huYP89Niv/QSYV/ygiVv8IG4r/FyeT/yAz 138 qP8oRMb/MVfi/zVr+P88fPH/SFFp/01DPv9dRi//ZUk4/1VIhP9HQn//TUlE/0hJQf8hFRL/SktE/3OB 139 ef88OTj/Qzcu/zys8v88rPL/CRokxwAAAJUAAAAAPKzy/0mr4v+GfV7/h3BK/51uNf9ROD

Delphi打开别人的源码之后显示class TClientSocket not found,怎么解决,还有TClientSocket TldAntiFreeze

加载Bin目录下的dclsockets70.bpl

在delphi中如何用程序定义excel的cells或columns的类型?

我想用程序将一些数据转成excel档,但是有一些string类型的数据如"2e12"转为excel後就变成了"2.00E+12"了.我想问一下怎样能在赋值前能先定义cells或columns的数据类型?请各位大侠多多指教!

delphi TDBGrid的fields和columns 有什么区别?

columns 是Dbgrid的属性;fields是数据库的字段的属性。fields要显示要通过设定其fieldname(对应的数据库字段)才可以显示。 查看更多答案>>

delphi listbox这么逐行删除items里的内容

listbox1.DeleteSelected;这个是删除选中的行 for i:=0 to listbox1.Items.Count-1 do listbox1.Items.Delete(i);这个是删除所有的一般就这样了

关于DELPHI的TPROCESSENTRY32

function KillTask(ExeFileName: string): integer; //杀进程函数const PROCESS_TERMINATE=$0001; var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin result := 0; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //取得系统快照FProcessEntry32.dwSize := Sizeof(FProcessEntry32); //循环例举,如果到达最后,则退出loopContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32); while integer(ContinueLoop) <> 0 do begin //取得进程名,大写后好作比较if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))= UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then Result := Integer(TerminateProcess(OpenProcess( PROCESS_TERMINATE, BOOL(0), //调用terminateprocess结束符合的进程项FProcessEntry32.th32ProcessID), 0)); ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32); end; end;ContinueLoop := Process32First(FSnapshotHandle,FProcessEntry32); //这一句是从进程链中,取出一个到FProcessEntry32结构中,然后在这个结构中取得进程名。至于FProcessEntry32,你用按下ctrl同时在这个上面鼠标点下,可以看到它的详细定义。

Delphi中如何实现如图所示的进度条效果

不需要那么麻烦,原生控件即可。Samples下面,TGauge控件,完美实现。属性设置:BorderStyle: bsNoneForeColor: clLimeHeight: 16进度:Progress

Delphi Tchart 急急,加分!

我不知道你的数据源是什么,给一些关于dbchart的设置给你参考1.绑定数据ADOQuery1.Active:=True;DBChart1.Series[0].DataSource:=ADOQuery1;DBChart1.Series[0].XLabelSource:="FiledName";DBChart1.Series[0].YValues.ValueSource:="FieldName";2.切换图表类型tmpChart:=DBChart1.Series[0];ChangeSeriesType(tmp,TLineSeries);tmpChart.Active:=True;tmpChart.RefreshSeries;3.设置分页DBChart1.ScaleLastPage:=true;DBChart1.MaxPointsPerPage:=10;DBChart1.Page:=1;DBChart1.PreviousPage;DBChart1.NextPage;DBChart1.Page:=NumPages;4.导出图表SaveToBitmapFile(FileName);5.打印图表uses TeePrevi;ChartPreview(Parent,DBChart1);TeePreview(Parent,DBChart1);6.数据源ADODataSet1.CreateDataSet;AdoDataSet1.Insert;AdoDataSet1.FieldByName("Value").AsFloat:=200000;AdoDataSet1.FieldByName("Info").AsString:="05-02";AdoDataSet1.Post;

Delphi 求树的遍历

网上相关例子应该有吧

delphi中如何抓取文件夹的修改日期?

如下代码usescomctrls, ShellAPI, commctrl; {...} constFL_FOLDER = 1;FL_FILE = FL_FOLDER + 1;{ 文件日期类型 }FD_CREATED = 1;FD_ACCESSED = FD_CREATED + 1;FD_MODIFIED = FD_ACCESSED + 1; typeFileInfoPtr = ^FileInfoRec;FileInfoRec = recordfName : string;typ : byte;Modified : TDateTime;end; function GetFileTimes(FileName : ShortString; typ : byte; var fDate : TDateTime) : Boolean; var fHandle : Integer; fTimeC, fTimeA, fTimeM : TFileTime; lTime : TFileTime; sTime : TSystemTime; begin { GetFileTimes } fHandle := FileOpen(FileName, fmShareDenyNone); fDate := 0.0; result := (fHandle >= 0); if resultthen begin GetFileTime(fHandle, @fTimeC, @fTimeA, @fTimeM);FileClose(fHandle);case typ ofFD_CREATED : FileTimeToLocalFileTime(fTimeC, lTime);FD_ACCESSED : FileTimeToLocalFileTime(fTimeA, lTime);FD_MODIFIED : FileTimeToLocalFileTime(fTimeM, lTime);end;if FileTimeToSystemTime(lTime, sTime)then fDate := EncodeDate(sTime.wYear, sTime.wMonth, sTime.wDay) + EncodeTime(sTime.wHour, sTime.wMinute, sTime.wSecond, sTime.wMilliSeconds);end; end; { of GetFileTimes }

delphi 函数内dispose有效吗

dispose对应的是new。

Delphi中赋值(:=)与分配(Assign)有什么区别?

FTrayIcon.Assign(Application.Icon);要先Create才能AssignFTrayIcon := Application.Icon;直接赋值了 如上描述!一个直接赋值,一个是一个通用的方法,并不是所有的对象都可以Assign的,必须是这个对象有Assign这个方法才能Assign意思是原样复制一个对象出来而不是Application.Icon这个对象了

delphi timer的用法

就是个定时器。Enabled就是开关,为False时这个东西就不工作了,里面的代码就不会被执行了。它有个Interval属性,这个的单位是毫秒。当Enabled为True时,每隔Interval毫秒,就执行一次里面的代码。比如,Interval设为1000,则每隔1000毫秒,里面的代码就被执行一次。

如何用delphi XE10编一个中文输入法

先定义一个公共变量 var ImeName : String;然后你可以在用户登入的时候 选择输入法procedure TValidateFrm.FormCreate(Sender: TObject);vari: Integer;beginCombobox1.Clear;for i := 0 to Screen.Imes.Count - 1 do//(呵呵,刷出当前计算机的输入法:)beginCombobox1.Items.Add(Screen.Imes[i]);end;Combobox1.Text := Screen.Imes[0];end;当用户选择完输入法后,给ImeName付值.PubUnit.ImeName := Combobox1.Text;

Delphi下编程实现中文输入

BorlandDelphi以其强大的功能及和高效的可 视化开发环境为广大程序设计员所青睐。尤其是它封装了WINDOWSAPI函数,能方便地利 用WINDOWS资源,大大加快了程序开发速度。在平时的计算机操作中,中文输入是不可避免的。 使用者可能喜欢不同的中文输入法(inputmethodeditor,简称IME),这就不得不经常点击 任务栏中的中文图标或用CTRL+Space,CTRL+Shift热键切换,初学者用起来很不方便。针对 这一问题,可以在开发软件时,在程序中设置用户喜欢的中文输入法,方便用户的使用。Delphi 中只有少数控件如TEdit支持IME,而且该功能不强,不能在运行时更改输入法。笔者通过实践和摸索,查找了相关的IME资料,利 用了WINDOWSAPI函数,实现了IME的功能。常用函数有:API函数:BOOLImmSimulateHotKey(HWNDhWnd,DWORDdwHotKeyID);//模拟热键其中Hwnd为程序窗口的句柄,dwHotHKeyID为模拟的热键,若成功则返回TrueHKLGetKeyboardLayout(DWORDdwLayout);//获得当前键盘状态BOOLImmIsIME(HKLhKL);//判断当前是否处于中文输入状态,若是则返回True自定义函数:打开相应输入法:OpenIme(imename:string),例OpenIme(全拼输入法);关闭中文输入法:CloseIme;以下是一个简单的例子,仅起参考作用。使用时uses中加上imm具体的实现方法及源代码如下:unitUnit1;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,Buttons,imm;typeTForm1=class(TForm)ComboBox1:TComboBox;BitBtn1:TBitBtn;BitBtn2:TBitBtn;BitBtn3:TBitBtn;procedureFormShow(Sender:TObject);procedureOpenIme(imename:string);procedurecloseIme;procedureComboBox1Change(Sender:TObject);procedureBitBtn1Click(Sender:TObject);procedureBitBtn2Click(Sender:TObject);procedureBitBtn3Click(Sender:TObject);private{Privatedeclarations}public{Publicdeclarations}end;varForm1:TForm1;implementation{$R*.DFM}procedureTForm1.FormShow(Sender:TObject);varj:integer;beginforj:=0toscreen.imes.count-1dobeginComBoBox1.Items.Add(screen.Imes.strings[j]);//获取系统中已安装的中文输入法end;end;procedureTform1.OpenIme(imename:string);varI:integer;myhkl:hkl;beginifImeNamethenbeginifScreen.Imes.Count0thenbeginI:=scr .Imes.indexof(imename);ifI=0thenmyhkl:=hkl(screen.Imes.objects[i]);activatekeyboardlayout(myhkl,KLF_ACTIVATE);//设置相应的输入法end;end;end;procedureTForm1.closeime;varmyhkl:hkl;beginmyhkl:=GetKeyBoardLayOut(0);ifImmIsIME(myhkl)then//判断是否在中文状态,若是则关闭它immsimulateHotkey(handle,IME_CHotKey_IME_NonIME_Toggle);end;procedureTForm1.ComboBox1Change(Sender:TObject);beginOpenIme(ComboBox1.Text);end;procedureTForm1.BitBtn1Click(Sender:TObject);beginimmsimulateHotkey(handle,IME_CHotKey_shape_Toggle);//切换半角和全角模式end;procedureTForm1.BitBtn2Click(Sender:TObject);beginimmsimulateHotkey(handle,IME_CHotKey_symbol_Toggle);//切换中文标点模式和英文标点模式end;procedureTForm1.BitBtn3Click(Sender:TObject);begincloseime;end;end.

Delphi 中循环切换本机存在的输入法

procedure OpenIme(imename:string);var I:integer; myhkl:hkl;begin if ImeName<>"" then begin if Screen.Imes.Count<>0 then begin i:=screen.Imes.indexof(imename); if i>=0 then myhkl:=hkl(screen.Imes.objects[i]); activatekeyboardlayout(myhkl, KLF_ACTIVATE);//设置相应的输入法 end; end;end;procedure TForm1.Button1Click(Sender: TObject);begin if imeCount < Screen.Imes.Count then begin OpenIme(Screen.Imes.Strings[imeCount]); inc(imeCount); end else imeCount:=0;end;

delphi 怎样使 PANEL 能够 执行 DRAG 动作?

你是想拖动panel还是想拖动panel上的控件如果只是想拖动panelpanel的dragmode为dmAutomaticdragkinddkdockform的docksite为true如果是想拖动上面的控件panel的docksite为true控件的dragmode为dmAutomaticdragkinddkdock

DELPHI IdSmtp发送邮件时出现:Connection Closed Gracefully 如何解决(分数我会逐渐追加)

我也遇到过这种情况,至于是程序发送失败了,还是被服务器给踢了,我也没搞清楚。我用NMSMTP控制发送邮件没有这个问题,你也试试吧。
 首页 上一页  1 2 3 4 5  下一页  尾页