![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загвоздка с I/O error 32 [D6, WinXP]
MuxauJl © (2005-06-28 16:37:00)Вот такая загвоздка:
//Создаю файл
FileCreate(path+'Log.sys');
//Потом использую свою функцию
LogSys('Первый запуск программы');
//сама функция
function TForm1.logsys(mes: string): string;
var F:textFile;
begin
if FileExists(path+'Log.sys')=true then
begin
AssignFile(F,path+'Log.sys');
Append(F);
Writeln(F,(datetostr(date)+' '+timetostr(time)+' - '+mes));
closefile(F);
end;
end;
ошибка возникает на Append'e.
Ошибка: EInOutError with message 'I/O error 32';
Подскажите где ошибка.
Германн (2005-06-29 02:12:00) [1]Я бы ещё добавил "Речь про "try...except..finally"!
MuxauJl (2005-06-29 00:11:00) [2]А про защиту от ошибок тоже прислушался, речь про try finaly end
Конечно, тоже учту.
Anatoly Podgoretsky (2005-06-28 23:18:00) [3]А про защиту от ошибок тоже прислушался, речь про try finaly end
MuxauJl (2005-06-28 23:13:00) [4]А с учётом реализации функции FileCreate, так и вообще смысла-то в этом "log.sys" большого не вижу, он будет затираться как минимум при каждом старте программы.
На счет смысла - это оставь мне. Прога большая и сложная, а это лишь капля в тысячах строк. Тут все к месту и имеет смысл.
Ну что поделаешь раз он не хочет прислушиваться к хорошим советам, даже к готовому коду
Все, я образумился - использую вариант в мессаге [1].
Плохиш (2005-06-28 22:59:00) [5]А с учётом реализации функции FileCreate, так и вообще смысла-то в этом "log.sys" большого не вижу, он будет затираться как минимум при каждом старте программы.
Anatoly Podgoretsky (2005-06-28 22:51:00) [6]Плохиш © (28.06.05 22:48) [7]
В его не не бессмысленные, просто сам код не того. Смещивать файлы Паскаля с хендловыми операциями не рационално, когда файлы Паскаля сами могут создавать новые файлы. Ну что поделаешь раз он не хочет прислушиваться к хорошим советам, даже к готовому коду.
Плохиш (2005-06-28 22:48:00) [7]Бессмысленные строки:
> h:=FileCreate(path+'log.sys');
> FileClose(h);
MuxauJl (2005-06-28 22:45:00) [8]В итоге я сделал так:
h:=FileCreate(path+'log.sys');
FileClose(h);
LogSys('Первый запуск программы');
Вопрос был, конечно, смехотворный. Просто меня переклинило немного.
Anatoly Podgoretsky (2005-06-28 20:17:00) [9]MuxauJl © (28.06.05 18:29) [4]
Выход другой, квалифицированый, а не дикий, тебе указали в [1], если предпринять еще и меры по защите от ошибок, то ничего лучше для текстовых файлов не придумаешь.
MuxauJl (2005-06-28 18:29:00) [10]А закрывать файл будет дядя Пушкин?
Это я понял, просто искал немного другой выход.
"...или же используй что-то типа этого:..."
Так я и сделал. Именно это я и искал. Благодарен.
Всем спасибо.
Anatoly Podgoretsky (2005-06-28 17:01:00) [11]MuxauJl © (28.06.05 16:37)
А закрывать файл будет дядя Пушкин?
icWasya (2005-06-28 16:48:00) [12]{ The process cannot access the file because it is being used by another process. }
ERROR_SHARING_VIOLATION = $20;
{$EXTERNALSYM ERROR_SHARING_VIOLATION}
Pearled (2005-06-28 16:45:00) [13]При создании файла он откывается для записи. Или закрывай файл сразу после его создания, или же используй что-то типа этого:
LogSys('Первый запуск программы');
//сама функция
function TForm1.logsys(mes: string): string;
var F:textFile;
begin
AssignFile(F,path+'Log.sys');
if FileExists(path+'Log.sys') then
Append(F)
else
Rewrite(F);
Writeln(F,(datetostr(date)+' '+timetostr(time)+' - '+mes));
closefile(F);
end;