现在的位置: 首页 > 综合 > 正文

Delphi自学系列_1_Delphi的学习感想

2013年05月16日 ⁄ 综合 ⁄ 共 1777字 ⁄ 字号 评论关闭

        好久没来逛博客园了,最近比较忙, 公司的事一大堆,都没时间学习了。

        为什么在这个时候想起要学习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.结束符后面有文本,编译器将忽略后面所有的文本,就解释了前面的问题

抱歉!评论已关闭.