Запускаю код в котором только 1 форма (главная), по событию OnCreat формы в момент её создания формирую и отправляю нужную мне команду в сом порт, после этого вывожу сообщение в label расположеную на форме. В конце процедуры OnCreat пишу form1.close. Результат нулевой форма висит, приложение не закрыто. если form1.close заменить на halt(0) то приложение закрывается но это же аварийное завершение??? + на 10 раз синий экран смерти. Если в главном модуле писать Application.Terminated:=true то возвращает ошибку.
Код:
unit sf;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Comm32;
type
TForm1 = class(TForm)
Comm321: TComm32;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
SendStr:String;
v:array[0..25] of integer;
bcc,i:integer;
begin
try
Comm321.StartComm;
bcc:=$00;
v[1]:=$02;
v[2]:=$47;
v[3]:=$30;
v[4]:=$30;
v[5]:=$30;
v[6]:=$30;
v[7]:=$00;
v[8]:=$30;{48+StrToInt(DatetoStr(Date)[1]);}
v[9]:=48+StrToInt(DatetoStr(Date)[2]);
v[10]:=48+StrToInt(DatetoStr(Date)[4]);
v[11]:=48+StrToInt(DatetoStr(Date)[5]);
v[12]:=48+StrToInt(DatetoStr(Date)[7]);
v[13]:=48+StrToInt(DatetoStr(Date)[8]);
v[14]:=48+StrToInt(DatetoStr(Date)[9]);
v[15]:=48+StrToInt(DatetoStr(Date)[10]);
v[16]:=$00;
v[17]:=48+StrToInt(TimetoStr(Time)[1]);
v[18]:=48+StrToInt(TimetoStr(Time)[2]);
v[19]:=48+StrToInt(TimetoStr(Time)[4]);
v[20]:=48+StrToInt(TimetoStr(Time)[5]);
v[21]:=$00;
v[23]:=$03;
for i:=2 to 21 do bcc:=bcc+v[i];
if bcc<$100 then bcc:=bcc
else
if (bcc>=$100) and (bcc<$200) then bcc:=bcc-$100
else
if (bcc>=$200) and (bcc<$300) then bcc:=bcc-$200
else
if (bcc>=$300) and (bcc<$400) then bcc:=bcc-$300
else
if (bcc>=$400) and (bcc<$500) then bcc:=bcc-$400
else
bcc:=bcc-$500;
for i := 1 to 2 do
begin
SendStr:=char(v[1])+char(v[2])+char(v[3])+char(v[4])+char(v[5])+char(v[6])+char(v[7])+char(v[8])+char(v[9])+char(v[10])+char(v[11])+char(v[12])+char(v[13])+char(v[14])+char(v[15])+char(v[16])+char(v[17])+char(v[18])+char(v[19])+char(v[20])+char(v[21])+inttohex(bcc,0)+char(v[23]);
Comm321.WriteCommData(PChar(SendStr), Length(SendStr));
end;
Form1.Label1.Caption:=DateTostr(date)+' '+TimetoStr(Time)+' дата и время синхронизированы';
except
Form1.Label1.Caption:='Текущая дата и время не синхронизированы!!!';
end;
end;
end.
Admin: Пользуемся тегами!