|
delphi问题集(二) [转]
问题1:在Delphi中如何对变量赋值? 答:在Delphi中使用的编程语言是基于Pascal的面向对象语言,但是在功能上更为强大。所用的语法与Pascal一样,对于赋值语句aa:= ″1234″;不能省掉等号前的冒号,这是Pascal赋值语句所必须的,并且语句最后的分号也必不可少,它代表一个语句的结束。另外,在使用变量前必须先对其声明(定义变量),否则无法使用。下面是一个完整的包含赋值语句的程序段: var aa:string; begin aa:=DateToStr((Date+5)); end; 问题2:如何在Delphi中制作数据库报表? 答:在任何数据库系统中报表系统都十分重要,它是主要的输出系统,Delphi中当然也少不了报表系统。 QuickReport就是Delphi中以控件组的形式提供的报表系统,完全支持Delphi数据库,可以方便地实现数据库的报表功能。可以立即打开Delphi在控件组模板中找到QuickReport。 启动Delphi后选择File|News,这时会出现一个模板和向导组,选择Business中的QuickReport Wizard,按照向导指示进行选择就可以制作一个简单的数据库报表程序。如果需要将自己的数据库资料输出到报表,请先打开数据库项目,然后在File|News菜单中选择New中的Report选项,可以立即生成一个空的报表窗口,通过鼠标右键激活报表设定。在FoxPro的报表中表格线是通过画线条来实现,而在QuickReport中可以选择QrShape来实现,只需修改属性Shape的设定值(qrsVertLine代表垂直线,qrsHorLine代表水平线)即可,至于线条的宽度和长度可以在相应的属性中设定。
问题3:Delphi在BDE别名中不识别“网上邻居”的路径,应该怎样做? 答:利用Windiws95对等网可以简单地实现数据共享。将数据库放在其中某个共享路径下就能实现数据库资料共享,但是如何在BDE中设定?在网络中无法使用本地路径,所以可以先将共享路径映射为网络驱动器,然后就可以象本地文件一样了,另外直接输入网络路径也可以实现这种功能,例如可以输入\\Computer1\Database\, 指定共享计算机名为Computer1的Database目录。另外,还可以通过浏览方式找到“网上邻居”中指定的网络路径。
问题4:请介绍一些学习Delphi的书籍和网站。 答:现在许多书只介绍Delphi入门、有关Pascal的语法和整个运行环境的使用,但是对于更进一步的使用说明和范例就不多了。当然最终要掌握Delphi还是得学会看Delphi的帮助,它才是最权威的资料,其中有许多范例,直接复制过来作一定的修改就可以在自己的程序中使用。我推荐给读者的网站有:Delphi的制作公司Inprise的网站http://www.inprise.com/ ,其次是中文Delphi网站http://www.vclxx.com , Delphi用户最好能到这些网站去访问,其中有许多有趣的资源、范例程序和已经增强的控件。
问题5:问题集一中介绍的ExecuteFile()函数为什么在使用时出现错误,甚至无法使用? 答:首先,必须将声明加入程序,而且不要在form的OnCreate中调用,因为调用Form-OnCreate时数据未初始化,就会出现非法读取内存错误。
loading... |
|
delphi问题集(一) [转]
标题:delphi问题集(一) 1.问:Delphi中实现类似VB中的字符串操作? 答:Delphi提供了丰富的字符串操作,可以实现许多复杂的处理。 Pos在字符串中查找指定字符串的位置,用于文字的查找 Delete删除字符串中从指定位置开始指定数量的字符 Insert在字符串指定文字开始插入字符串 Copy返回字符串中指定位置的一定长度的字符串 Length返回指定字符串的长度
2.问:如何进行字符串与其他类型数据转换? 答:可以用inttostr()函数,这是一个十分常用的函数,如果你希望将整数转化为字符串的形式,就必须使用这个函数。使用的方法十分简单,inttostr(整数)返回一个代表这个整数的字符串。对应函数strtoint(字符串)返回整数。特别注释:如果你不想因为输入了不是数字的字符串而引起异常报警(这是很常见的),你可以使用一个替代的函数,自己进行输入校验,这个函数就是StrToIntDef。使用的方法是:StrToIntDef(字符串,默认数字),返回的是数字,如果输入的字符串不是合法的数字,返回的将是默认的数字,如果对其进行检测,就可以发现问题。If (Inputbox(′输入数字′),-1)=-1 then showmessage(′你输入的不是数字或者输入了-1′);对应的函数还有许多,下面仅列出其函数名,具体的使用方法类似,如果需要进一步了解此类函数,请参阅delphi的联机帮助。 FloatTostr浮点数转化成字符串 FloatToStrF带格式的浮点数转化成字符串 IntToHex整数到十六进制字符串 TimeToStr时间转化成字符串 DateToStr日期转化成字符串 DateTimeToStr日期时间转化成字符串 FmtStr按指定格式输出字符串, 3.delphi编程中调用其他执行程序? 答:Function ExecuteFile(const FileName, Params, DefaultDir: string;ShowCmd: Integer): THandle; 是最简单的执行文件调用方法。 演示的程序如下: executefile(′c:\winamp\winamp.exe′, 'winamp.m3u′,'d:\mp3\′,0); 这段程序就是我编写的定时启动播放音乐程序的一部分,仅供大家参考。 提示:最为有趣的是如果在输入的参数中填入的不是可执行文件名,而是某个数据文件如DOC文件,它会自动调用相应的程序打开(如Word)。通过这一功能还可以实现,自动发送E-mail,自动访问指定网站的功能。 executefile(′mailto:delphi32@infoworld.sh.cn′,″,″,0); 简单的语句实现了调用默认电子邮件程序向我发信的功能。 executefile(′http://delphi.sq.sh.cn′,″,″,0); 立即可以拨号上网看到我的主页 executefile(′d:\mp3\cd01\001.mp3′,″,″,0); 立即调用默认的MP3播放程序播放这首歌曲。
--------------------------------------------------------------------------------
loading... |
|
delphi中的几个技巧
1、判断一个字符串是否包含于另外一个字符串的方法 例如:if pos('ab','abcd')<>0 then messagedlg('ab是包含于abcd',mtConfirmation,[mbYes, mbNo],0); pos(obj,target) 在target字符串中找出第一个出现obj的第一个字符位置,如果找不到,返回0.
2、如何使窗口全屏,类似游戏一样,而不是窗口的最大化! (1) BorderStyle 为 bsNone (2) Windowstate 为 wsMaximized (3) 退出时可加一个按钮之类的,写上 close 即可退出。
3、数字格式化输出 format('%8.2f',[123.456]),返回字符串' 123.46'。
4、播放一个wav文件 use mmsystem; SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC);
5、InputBox,InputQuery和ShowMessage函数的威力 uses dialogs; var s,s1:string; b:boolean; begin s:=trim(Inputbox('NewPassword','Password','masterkey')); b:=s<>'' s1:=s; if b then b:=InputQuery('Confirm Password','Password',s1); if not b or (s1<>s) then ShowMessage('Password Failed'); end;
6、几个有关子目录的操作的过程 MkDir(str); ChDir(str); GetDir(DriveID,str); SetCurrentDir(str); IOResult --上面几个过程调用成功即返回0值
7、将一个可视控件变成图形类型 例如将一个带背景的LABEL变成一个TIMAGE图片类型,可以这样做: image1.width:=label1.width; image1.height:=label1.height; label1.perform(WM_PAINT,image1.Canvas.Handle,0);
8、如何得到字符的ASCII值 得到字符的ASCII值,可以用如下语句: var: a:integer; string1:string; begin string1:='ABC' a:=byte(string[1]); {此时就得到'A'的ASCII值} end;
9、动态更新DBGrid的颜色 例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。使用的控件事件为DBGrid.OnDrawColumeCell: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Table1.FieldByName('Population').AsInteger > 20000000 then DBGrid1.Canvas.Font.Color := clBlue; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
10、获得命令行参数 1. 取得命令列参数的个数: ParamCount 函数 2. 呼叫 ParamStr(0), 传回执行档的档名(含路径) 3. 呼叫ParamStr(n), 传回第n个参数的内容 例子: procedure TForm1.FormCreate(Sender: TObject); var ix: integer; begin Memo1.Lines.Clear; if ParamCount = 0 then Memo1.Lines.Add('没有参数') else begin Memo1.Lines.Add('档名:' + ParamStr(0)); for ix := 1 to ParamCount do Memo1.Lines.Add(ParamStr(ix)); end; end;
|
|
|
|