Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
ВнизСобытие OnClose Найти похожие ветки
← →
Mirror (2004-10-19 20:43) [0]Доброго времени суток!
Помогите, я не понимаю, почему моё приложение завершает работу не доконца выполнив обработчик события OnClose
конкретный пример:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
Reg: TRegistry;
begin
TextsStream.SaveToFile(SFileName);
Reg := TRegistry.Create;
If Reg.OpenKey("\Software\Key", True) then
Begin
Reg.WriteInteger("PosLeft",Form1.BoundsRect.Left);
Reg.WriteInteger("PosTop",Form1.BoundsRect.Top);
Reg.WriteInteger("PosRight",Form1.BoundsRect.Right);
Reg.WriteInteger("PosBottom",Form1.BoundsRect.Bottom);
Reg.WriteBool("WordWrap",Form1.ToolButton20.Down);
end;
Reg.Free;
end;
Если поток TextsStream давольно большой, то программа завершается неуспев записать данные в реестр, а иногда даже не дописав до конца файл. ПОЧЕМУ???
← →
jack128 © (2004-10-19 20:47) [1]Mirror (19.10.04 20:43)
TextsStream давольно большой, то программа завершается неуспев записать данные в реестр, а иногда даже не дописав до конца файл
не может быть.. Поставь весь код в
try
<весь твой код>
finally
ShowMessage("test"); // всегда будет появлятся эта надпись..
end;
Abort нигде не используешь??
зы
MyVar := MyType.Create;
try
...
finally
MyVar.Free;
end;
← →
abc (2004-10-19 21:29) [2]procedure TfrmClock.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
Reg: TRegistry;
begin
TextsStream.SaveToFile(SFileName);
Reg := TRegistry.Create;
If Reg.OpenKey("\Software\Key", True) then
Begin
Reg.WriteInteger("PosLeft",Form1.BoundsRect.Left);
Reg.WriteInteger("PosTop",Form1.BoundsRect.Top);
Reg.WriteInteger("PosRight",Form1.BoundsRect.Right);
Reg.WriteInteger("PosBottom",Form1.BoundsRect.Bottom);
Reg.WriteBool("WordWrap",Form1.ToolButton20.Down);
end;
Reg.Free;
end;
так будет работать
← →
Amoeba © (2004-10-20 11:58) [3]Правильнее будет так:
procedure TfrmClock.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
Reg: TRegistry;
begin
TextsStream.SaveToFile(SFileName);
Reg := TRegistry.Create;
try
If Reg.OpenKey("\Software\Key", True) then
Begin
Reg.WriteInteger("PosLeft",Form1.BoundsRect.Left);
Reg.WriteInteger("PosTop",Form1.BoundsRect.Top);
Reg.WriteInteger("PosRight",Form1.BoundsRect.Right);
Reg.WriteInteger("PosBottom",Form1.BoundsRect.Bottom);
Reg.WriteBool("WordWrap",Form1.ToolButton20.Down);
end;
finally
Reg.Free;
end;
end;
← →
-=SS=- © (2004-10-20 12:34) [4]А еще правильнее
procedure TfrmClock.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
Reg: TRegistry;
begin
CanClose:=False;
TextsStream.SaveToFile(SFileName);
Reg := TRegistry.Create;
try
If Reg.OpenKey("\Software\Key", True) then
Begin
Reg.WriteInteger("PosLeft",Form1.BoundsRect.Left);
Reg.WriteInteger("PosTop",Form1.BoundsRect.Top);
Reg.WriteInteger("PosRight",Form1.BoundsRect.Right);
Reg.WriteInteger("PosBottom",Form1.BoundsRect.Bottom);
Reg.WriteBool("WordWrap",Form1.ToolButton20.Down);
end;
finally
Reg.Free;
CanClose:=True;
end;
end;
Если где то будет ошибка програма не закроется.
← →
КаПиБаРа © (2004-10-20 14:04) [5]-=SS=- © (20.10.04 12:34) [4]
Если где то будет ошибка програма не закроется.
В гробу я видел такую программу в белых тапках.
← →
Cosinus © (2004-10-20 14:06) [6]
> КаПиБаРа © (20.10.04 14:04) [5]
LOL ;)
Но я согласен.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c