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

Вниз

имеет ли смысл задержка?   Найти похожие ветки 

 
brother ©   (2008-05-29 09:34) [0]

на onClose:
Memo1.Lines.SaveToFile(extractfilepath(Application.ExeName)+"auto_copy_ftp_log.txt");
sleep(500);

задумался...


 
Palladin ©   (2008-05-29 09:35) [1]

интересно, а о чем ты думал, когда писал это?


 
brother ©   (2008-05-29 09:38) [2]

думал о скорости записи на винт при интенсивной нагрузке онного...


 
Palladin ©   (2008-05-29 09:40) [3]

а как соотносится скорость записи на винт и ввод потока в спячку на пол секунды? а почему на пол секунды, а не на секунду или на час?


 
Thrasher ©   (2008-05-29 09:46) [4]

Нет, не имеет. Если боишься, что данные не запишутся, то ставь обработчик на OnCloseQuery:

CanClose:=false;
try
Memo1.Lines.SaveToFile(....);
except
ShowMessage("Ошибка при записи лога! ");
CanClose:=True;
end;
CanClose:=True;


 
Palladin ©   (2008-05-29 09:48) [5]


> Thrasher ©   (29.05.08 09:46) [4]

а с какой целью такая свистопляска с безсмысленными назначениями CanClose значений если в конце концов оно все равно будет True ?


 
clickmaker ©   (2008-05-29 09:48) [6]

> Если боишься, что данные не запишутся

try
 Memo1.Lines.SaveToFile(extractfilepath(Application.ExeName)+"auto_copy_ftp_log.txt");
 Memo1.Lines.SaveToFile(extractfilepath(Application.ExeName)+"auto_copy_ftp_log.txt");
 Memo1.Lines.SaveToFile(extractfilepath(Application.ExeName)+"auto_copy_ftp_log.txt");
except
 Memo1.Lines.SaveToFile(extractfilepath(Application.ExeName)+"auto_copy_ftp_log.txt");
end;

чтоб наверняка ))


 
brother ©   (2008-05-29 09:50) [7]

система пишет файл гигов 20... в это время моя прга пишет лог ПРИ ЗАКРЫТИИ... Спрашиваю... будет ли записан файл?


 
ANB   (2008-05-29 09:52) [8]


> система пишет файл гигов 20... в это время моя прга пишет
> лог ПРИ ЗАКРЫТИИ... Спрашиваю... будет ли записан файл?

Будет. SaveToFile - неасинхронный метод. Если лог здоровый - то программа просто будет долго завершаться и всех делов.


 
Palladin ©   (2008-05-29 09:58) [9]


> будет ли записан файл?

Неа, не будет, если на винте осталось только 15Гб. Твоему логу тупо нехватит места. Или потому, что ты где-то напортачил с данными и получил AV. Или потому, что пользователь снял, к чертям собачьим, задачу. Или reset нажал, к тем же чертям.

А хранить лог в памяти приложения и делать дамп только при событии OnClose какой то формы (или чего другого) это более чем странно.


 
ANB   (2008-05-29 10:03) [10]


> Неа, не будет, если на винте осталось только 15Гб. Твоему
> логу тупо нехватит места. Или потому, что ты где-то напортачил
> с данными и получил AV. Или потому, что пользователь снял,
>  к чертям собачьим, задачу. Или reset нажал, к тем же чертям.
>  

Тады и приложение не закроется.

Но писать лог лучше сразу в файл. Причем для большей безопасности, если позволяет критичность к скорости, лучше еще и принудительно сбрасывать информацию из буфера. Мона тупо его кажный раз открывать и закрывать.


 
Palladin ©   (2008-05-29 10:04) [11]


> Но писать лог лучше сразу в файл.

об том и речь...


 
brother ©   (2008-05-29 10:20) [12]

по идее место позволяет, то прога не закроется пока не запишет (в моем случае)... тогда sleep не нужен конечно )


 
TForumHelp ©   (2008-05-29 11:10) [13]


> задумался...

смеялся... :)

попробуй построчно записывать, когда запишешь последнюю, сделай переменную какую-нибудь = True.


var
 i: Integer;
 done: Boolean;

begin
 i := -1;
 done := False;
 While not done do begin
   Application.ProcessMessagess;
   Inc(i);
   //записывай в файл строку Memo1.Lines[i]
 End;
end;


в событии OnCloseQuery:

begin
 CanClose := done;
 If not done then ShowMessage("Пишется строка " + IntToStr(i) + "! Подождите...");


если так переживаешь! =)


 
Kolan ©   (2008-05-29 15:24) [14]

> чтоб наверняка ))

Забыл «контрольку» :)
I := 0;
while (I <= 9) and (not FileExists(extractfilepath(Application.ExeName)+"auto_copy_ftp_log.txt")) do
 Memo1.Lines.SaveToFile(extractfilepath(Application.ExeName)+"auto_copy_ftp_log.txt");


 
Stas ©   (2008-05-29 17:43) [15]

brother ©   (29.05.08 09:34)  
>имеет ли смысл задержка?
Если эта задержка у девшки... )))
Может лучше лог писать по ходу появления событий, на которые добавляются строки в MEMO1 ?
Т.к. при аварийном закрытии программы потеряете лог!



Страницы: 1 вся ветка

Текущий архив: 2008.06.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
3-1200387283
Андрей Пл
2008-01-15 11:54
2008.06.22
Сравнение дат в InterBase


3-1200759708
Ega23
2008-01-19 19:21
2008.06.22
Список системных таблиц FireBird и ещё кое-что


1-1194937505
DancerMan
2007-11-13 10:05
2008.06.22
Обмен значениями элементов ListView


2-1211883511
dumka
2008-05-27 14:18
2008.06.22
Сумма прописью в отчете


2-1211854505
AlekseyB
2008-05-27 06:15
2008.06.22
DBGRID