注册 登录
编程论坛 Delphi论坛

业余的程序员用VB,真正的程序员用VC,聪明的程序员用Delphi

swgweb 发布于 2004-04-12 18:32, 5153 次点击
看实例学Delphi编程思路和技巧   在编程爱好者中流传着这样一句话:“业余的程序员用VB,真正的程序员用VC,聪明的程序员用Delphi”。这当然不尽贴切,但从中不难体会到Delphi作为Windows下的主要编程工具之一,其功能完善、灵活多变且易学易用的特点。 下面,我们就通过四则具体的实例来学习Delphi编程的一般思路和技巧。 将程序加入启动 Windows自启动的信息存放于注册表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run中,Delphi为程序员提供了专用于注册表操作的类型TRegistry:首先利用它声明一个变量,变量的RootKey属性表明当前是对哪一个根键进行操作;使用变量的OpenKey方法打开子键,使用ReadString方法读子键内容,使用WriteString方法写入子键内容。可以自定义一个过程AutoRun来实现此功能,格式为:AutoRun(任意名称,要自动运行的程序名)。实例如下: implementation uses Registry; //声明注册表单元 procedure AutoRun(sCaption,sExeName:string); //sCaption为项目名称,sExeName为程序名 var RegF:Tregistry; //定义变量RegF begin RegF:=Tregistry.Create; //创建变量 RegF.RootKey:=HKEY_LOCAL_MACHINE; //指定要操作的根键 if RegF.Openkey('Software\Microsoft\ Windows\CurrentVersion\Run',true) then RegF.WriteString(sCaption,sExeName); RegF.Free; //释放变量 end; procedure TForm1.Button1Click(Sender:TObject); begin AutoRun('MyAutoRun',Paramstr(0)); //调用过程,Paramstr(0)函数返回带路径的程序名 end; 实现文件拷贝 在本例中,我们使用数据压缩的API函数LZCopy来实现一个文件拷贝的过程,其调用格式为:CopyFile(源文件名,目标文件名。 implementation uses LZExpand; procedure CopyFile(sFileName,dFileName:String); var sFile,dFile:file; begin AssignFile(sFile,sFileName); Reset(sFile); AssignFile(dFile,dFileName); Rewrite(dFile); LZCopy(TFileRec(sFile).Handle,TFileRec (dFile).Handle); CloseFile(sFile); CloseFile(dFile); end; 避免多次打开同一程序 Windows是一个多任务的操作系统,允许用户同时打开多个实例,但这样做有可能会造成不良后果。例如:自己设计屏幕保护程序时,只要屏保程序已经被打开运行,就不能再运行其第二个实例;如果不加以限制,则可能出现每隔一定时间就运行一个屏保程序的不正常情况。 要使系统只能打开程序的一个实例,需要对工程文件(*.dpr)进行少许改动,使用API函数FindWindow,其格式为:FindWindow(窗体类名,窗体标题),返回一个窗体的句柄或零(如果没有找到窗体)。假设程序主窗体的标题为MainForm,则工程文件的具体代码如下: program Project1; uses Forms,Windows, Unit1 in 'Unit1.pas' {Form1}; var Hwnd:THandle; begin Hwnd:=FindWindow('TForm1','MainForm'); //查找是否已有窗体MainForm if Hwnd<>0 then begin SetForegroundWindow(Hwnd); //激活已运行的程序实例,但程序最小化时无效 Application.Terminate; //终止本次实例 end else begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run;//运行本次实例 end; end. 限制窗体的大小 当编程者为窗体选择可变化的边框时,用户可以按自己的意愿拖动边框,改变窗体大小。Delphi为窗体和所有控件提供了一个特殊的属性:Constraints。只需为Constraints属性的子属性设置合适的最大值与最小值,就能建立一个大小不超过指定限制的窗体或控件。我们可以将这些语句放在窗体创建事件中(FormCreate): procedure TForm1.FormCreate(Sender: TObject); begin form1.Height:=200; form1.Width:=300; form1.Constraints.MaxHeight:=400; form1.Constraints.MaxWidth:=600; form1.Constraints.MinHeight:=100; form1.Constraints.MinWidth:=150; end;
44 回复
#2
忍天2004-04-12 21:48
不同意!
#3
静夜思2004-04-18 19:30
现在C#炒的很热
#4
firechun2004-04-21 16:12
涉及语言之争,不好。
#5
asdliu2004-04-21 21:51
他说的有道理呀,vb是真的不行了,一直在走下坡路,c++和c#还有。net和jave等才是现在最流行的呀,我的同学现在都不学vb了,我以前也学vb,可是我的一个北大的同学说那没有前涂的,现在只要有/c#/jave/c++,无论那个程序都可以搞定的,他现在是ibm的实习生,我以前觉得无论学什么语言,只要学好就没什么不行的,听他一说,我心非意冷了,就改学c++了,不知道我的这种做发对不对,希望大家说说吧
#6
学习者2004-04-23 19:42

我也不同意!!

这怎么都是版主在说话,在各位面前我都不好意思说话了。——太菜了

#7
griefforyou2004-04-24 11:34
呵呵,王婆卖瓜,自卖自夸
#8
tvrc2003792004-04-24 16:18

都是一样的啊,Delphi也不怎么样啊!

#9
C++大粉丝2004-04-26 23:56
晕~没有我们VC的事儿,还是不绞合了~~
#10
yangguofa2004-05-07 12:02

优点各自存在!!!

不过我个人比较喜欢DELPHI

#11
shujucangku2004-05-08 16:47

55555,怎么提都没提我们的C++builder呢?

#12
swgweb2004-07-06 13:04
呵呵! 来句广告词"我的地盘,听我的!"
#13
find2004-07-16 17:49

事物存在只有它的道理!!

#14
流浪的云2004-07-30 21:56
我用delphi快一年了,发现它的很多缺点,虽然很多可以用编程技巧弥补,但是还是决定改c#了
#15
小小2004-09-02 12:55

把c/vc++/java/dephi都学了!!!!

哪个好再说/

#16
空前2004-10-09 20:01

怎么都喜欢<P>

</P>

这是什么意思?

#17
ChenSirJD2004-10-10 00:00

用什么语言来开发取决于你要开发什么样的东西

没有最好的,只有最适合的

#18
anhua200hl2004-10-18 20:43

楼主 你是不是我们老师啊 他上课的时候都要讲这句话的

#19
刹那2004-11-09 21:36
其实Delphi已经省略了许多繁琐的问题了  但是我自己觉得Dlphi比较容易掌握对于处学程序的朋友来所
#20
skymeteor2004-12-09 17:13
怎么是文不对题啊
#21
moses2004-12-19 17:02
你们继续说,我还不够格,不发表评论!
#22
cgnr2005-01-25 19:53
我觉得delphi比较适合我
#23
shuyue19812005-01-26 10:19
正确!
#24
笑问情缘2005-02-15 23:25
差不多
#25
海风2005-03-04 11:14
VB了也不错...就是不会太严密...
JAVA可能是最不错的.了
#26
shuyue19812005-03-19 14:31
c++,JAVA始终是追求的目标!
#27
68224212005-06-03 15:30
不一定,说起来,DELPHI是所有开发软件里开发周期最短的开发工具,那是不用质疑的,开发WIN32程序还是首选DELPHI,但是基于。NET架构DELPHI确实做的不怎么样
#28
空前2005-06-03 19:59
楼主,这样的技巧能不能多发点!·~~
#29
softwarelan2005-06-10 13:13
同意
#30
softwarelan2005-06-10 13:27
行啊
#31
HOUGANG0072005-06-13 13:10
大虾学哥:
        都说DELPHI好,但利用MSCOMM控件进行二进制数据发送上,却不及VB简单:我用书上别人的原代码都不能成功发送,实在找不出原因,望予以指点,谢谢!
                                                           HOUGANG007
#32
lzk20052005-08-25 00:48
哪个怎么样不重要,自己学会了才是实在的!
#33
seeker2005-08-25 12:51
你们说:业余的程序员用VB,真正的程序员用VC,聪明的程序员用Delphi 。 我说:真正的、聪明的程序员用C++Builder !!!
#34
luperfect2005-09-30 18:44
#35
jxing2005-10-01 15:13
DELPHI能做出来的,VB也能做出来
#36
cbmcbm2232005-10-07 02:48
什么东西嘛,学什么没负钱途?
#37
华恶崇2005-10-12 11:39
喜欢C++
#38
华恶崇2005-10-12 11:40
DELPHI可以底层操作.

VB行吗?

#39
华恶崇2005-10-12 11:41
DELPHI不需要运行库,
VB需要运行库.
#40
wtcmaster2005-10-20 22:02
大家说的都有理
就是不知道该听谁的
还是跟着潮流走比较保险啊
#41
vipismez2005-10-25 21:34
VB太封装了,不适宜深入学习.只能用来教学.
DELPHI不错.所有代码对程序员可见,这是所以程序员所希望的.
我支持DELPHI,在这样一点JAVA做的也不错.
对VC了解不多,不敢多说.
#42
cuihaihang2005-11-04 17:00
同意你说的啊
#43
苦味酸2005-11-05 23:21
我以前学C++,现在正学Delphi中,感想还不是很深,没啥说的
#44
zhangzujin2005-11-07 23:32
不过说实话Delphi确实比较容易学,当然什么东西学高深了就南了,大家自己把握自己。
#45
zengsisan2005-11-10 11:47

我一个都不会,不知道学哪个好

1