Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1096118680
X-Disa
2004-09-25 17:24
2004.10.31
Автозапуск проги


14-1097664858
Gorlum
2004-10-13 14:54
2004.10.31
Слои компонентов в D5


8-1091519068
__guest
2004-08-03 11:44
2004.10.31
Получение видео/аудио потоков


1-1097675832
Неуловимый Джо
2004-10-13 17:57
2004.10.31
перевод Integer в 4-ре char`а


14-1097137128
Игорь Шевченко
2004-10-07 12:18
2004.10.31
Вопрос к бывшим владельцам старого железа





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский