好久没来逛博客园了,最近比较忙, 公司的事一大堆,都没时间学习了。
为什么在这个时候想起要学习Delphi呢, 主要是因为最近公司引进了几套设备,里面用到了Delphi。 没有想到的是Delphi
居然可以和西门子的S7 300/400PLC进行无缝的通讯,而且还可以和西门子的数控系统802d进行通讯。
一直以来用的是WinCC或者Intouch这样的组态软件(我不知道怎么那个中国人把这种软件叫成了组态软件,因为无论怎么
查字典和典故都没法,找到组态这个词的意义,如果不是学自控的,估计一辈子也无法理解组态这个词的意义),这样的软件(开发工
具)具有太多的限制,对于程序开发人员来说有时候很难实现自己的想法,而且这样的软件通常很大(目前WinCC V6.2的安装包2G+,
V7.0的安装包3G+),装上后计算机就全死翘翘了,比拖拉机还慢。现在见到一个相对入门容易并且功能还比较强大开发工具(我知道利
用任何开发工具开发都可以实现与PLC的通讯),所以想学学。(Delphi对win api的开发比vb貌似好)。
上个周末用了两天的时间学习Delphi,发现不像想象的那么简单。下面是自己练习的一段代码,有很多不明白的地方,现在贴出来,希
望园子里的大侠可以指教。
Exp:
program TypeTest; {$APPTYPE CONSOLE} uses SysUtils; //interface 不知道为什么不可以在这个地方使用interface, // 难道仅能在unit单元文件中使用? { 本来想在这个地方仅声明函数和过程原型的 implemetation子句下面实现函数和过程,结果发现不行 } var iNum1:integer; iNum2:integer; chVar:char; str:string; // declaer fuction function GetNum():Integer; var str:string; begin writeln('Please input a number'); { 不知道怎么从console读取数字,只能用这样的方法。这个方法如果输入 的是字符还会发生异常,并且不知到为什么这样还不能捕捉到异常进行处理, 如果输入字符就会程序当掉。不知道那位大侠可以指点一二 } readln(str); try result:=strtoint(str); except writeln('There is a exception when run this program'); end; end; function GetSum(iVar1,iVar2:integer):integer; begin result:= ivar1 + ivar2; end; function GetChar():char; var str:string; begin readln(str); result:=str[2]; //貌似 ansistring 对象可以像数组一样处理, 但是我看开发员指南的时候说不能这样处理? 很奇怪 end; var ivar1:integer; ivar2:integer; ch:char; { implementation 不知道为什么不能在这个地方使用这个关键字 } begin { TODO -oUser -cConsole Main : Insert code here } ivar1:=GetNum; ivar2:=getnum; //不知道怎么在Writeln函数里面进行回车换行? //google: // 'abc'+#13#10 // #13是回车符 // #10是换行符 writeln('the sum of ',inttostr(ivar1),'and ',inttostr(ivar2),'is',#13,#10,inttostr(getsum(ivar1,ivar2))); ch:=Getchar; writeln(ch); readln(str); end. { 原本想和在C中一样在main函数的后面定义函数,结果发现不行,不知道为什么? 还是可以,或者有什么其他特殊的设定? 不知道那位大侠可以指点一二? } //这样居然有warning: typetest.dpr[75]: Text after final'end.' - ignored by compiler //提示报警,在end.结束符后面有文本,编译器将忽略后面所有的文本,就解释了前面的问题