posts - 48,comments - 29,trackbacks - 0

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的网站::URL::http://www.inprise.com/  ,其次是中文Delphi网站::URL::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(′::URL::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;
posted on 2006-05-09 23:19 风筝 阅读(841) 评论(0)  编辑 收藏 引用 所属分类: 技术点滴
只有注册用户登录后才能发表评论。