Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Загвоздка с 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо