Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

Событие 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;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.031 c
1-1097780570
Aleks
2004-10-14 23:02
2004.10.31
Вывод графика из TChart в браузер


1-1097769683
ev_
2004-10-14 20:01
2004.10.31
Dbgrid


1-1097645764
Uran
2004-10-13 09:36
2004.10.31
Runtime Error 216 - что это за ошибка!?


14-1097138479
Lool
2004-10-07 12:41
2004.10.31
Задача по геометрии


9-1088381001
Xerx
2004-06-28 04:03
2004.10.31
OpenGL без VCL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский