Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.11.2009, 18:10
zonder_k zonder_k вне форума
Прохожий
 
Регистрация: 05.11.2009
Сообщения: 6
Репутация: 10
По умолчанию Корректно закрыть главную форму и приложение в целом

Запускаю код в котором только 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: Пользуемся тегами!

Последний раз редактировалось Admin, 05.11.2009 в 18:14.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:52.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025