Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];
Внизимеет ли смысл задержка? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.048 c