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

Вниз

183 I/O Error   Найти похожие ветки 

 
Evgeniy_K   (2003-12-28 11:31) [0]

Почему может возникать 183 I/O Error?
fLog: TextFile;
...
AssignFile(fLog, extractfilepath(paramstr(0)) + "file.log");
Rewrite(fLog);


 
Ihor Osov'yak ©   (2003-12-28 11:40) [1]

Хм..

ShowMessage(SysErrorMessage(183));

Посмотри, что напишет, может какие-то соображения соображатся...


 
ИМХО ©   (2003-12-28 11:41) [2]

Наверное, 103-я.


 
Ihor Osov'yak ©   (2003-12-28 11:44) [3]

зы - SysErrorMessage - sysutils;

зы2 - Хотя при rewrite 183 ошибку получить - я не представляю, как это сделать.. немного больше код приведи, в частности как код ошибки получаешь..


 
Anatoly Podgoretsky ©   (2003-12-28 12:51) [4]

Вероятно где то уже открыто


 
dmk ©   (2003-12-28 13:07) [5]

MsWinErr по этому говорит следующее:
Err #183 - Невозможно создать файл так как он уже существует


 
Anatoly Podgoretsky ©   (2003-12-28 13:22) [6]

dmk © (28.12.03 13:07) [5]
Существование файла для Rewrite (Rewrite для этого и предназначен) не является помехой, а вот если файл нельзя переписать по какой то либо причине является.


 
shane54 ©   (2003-12-28 13:25) [7]

1) Права
2) Сетевой диск
3) Файл открыт какой-нить глупой программой а-ля Ворд?


 
dmk ©   (2003-12-28 14:17) [8]

2 Anatoly Podgoretsky © (28.12.03 13:22) [6]
Не сомневаюсь :D


 
Evgeniy_K   (2003-12-29 13:15) [9]


procedure AddLog(str: String);
var
fLog: Text;
path: String;
begin
GetLastError;
path:= extractfilepath(paramstr(0)) + "error.log";
AssignFile(fLog, path);
if FileExists(path) then
Append(fLog)
else
Rewrite(fLog);
writeln(fLog, str);
CloseFile(fLog);
end;

...
try
//Код, в котором возникает ошибка
except
AddLog(logR);
end;
...


 
Рамиль ©   (2003-12-29 13:24) [10]


> CloseFile(fLog);

Это, что? после CloseFile писать пытаетесь?..


 
kdy ©   (2003-12-29 13:25) [11]

> [7] shane54 © (28.12.03 13:25)

1) Права
есть
2) Сетевой диск
да. ну и что?
3) Файл открыт какой-нить глупой программой а-ля Ворд?
не открыт

Я тоже столкнулся с такой ошибкой. Причём ошибка есть только при первом обращении к файлу, начиная со второго - всё проходит нормально. А другие файлы после этого открываюстя нормально уже с первого раза (они могут и на других дисках лежать.)
Ещё один ньюансик - ошибка вылазит только у заказчика.

Пока я её успешно игнорирую, но разобраться было бы интересно.


 
Рамиль ©   (2003-12-29 13:27) [12]


> Рамиль © (29.12.03 13:24) [10]
Сорри, невнимательно посмотрел...


 
Evgeniy_K   (2003-12-29 15:38) [13]

У меня при rewrite всегда I/O Error 183 (только в этом приложении). Больше нигде в коде этот файл не открывается и т.п.


 
kdy ©   (2003-12-29 15:46) [14]

>[13] Evgeniy_K (29.12.03 15:38)

А у меня - на reset ругается.
AssignFile(f,flTXT);
Reset(F);


 
alex_*** ©   (2003-12-29 15:51) [15]

может он неявно перед этим открывается/закрывается? У меня как-то было при многократном открытии/закрытии log файла rewrite"ом, вылетала ошибка доступа. Разбираться было некогда и пришлось log писать на функциях API.


 
Evgeniy_K   (2003-12-30 07:56) [16]

100% нигде файл больше не используется, т.е. это его первое открытие/перезапись


 
han_malign ©   (2003-12-30 08:49) [17]

183 - ошибка весьма интересная, во всяком случае если все операции ввода/выводы прошли успешно, и на голом месте вызывается GetLastError - возвращается именно эта ошибка...

Могу посоветовать только хрестоматийное:
{$I-}Rewrite(fLog); {$I+}
if(IOResult=0)then begin
...
CloseFile(fLog);
end;


 
Evgeniy_K   (2003-12-30 20:06) [18]

Ошибка идет на rewrite. GetLastError это на всякий пожарный - чтоб проверить не порождается ли эта ошибка предыдущей, если таковая имеется.


 
YuRock ©   (2003-12-30 20:46) [19]

Попробуй не

...
fLog: Text;
...

а

...
fLog: TextFile;
...


 
Evgeniy_K   (2004-01-01 10:07) [20]

Не помогает, пробовал :-/


 
CYBERWOLF ©   (2004-01-02 02:20) [21]

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

вместо
...
path:= extractfilepath(paramstr(0)) + "error.log";
...

пиши
...
path:= "error.log";
...

можно еще потыкаться:
1. использовать Application.ExeName вместо ParamStr(0)
2. возможно не хватает слэша:
path:= extractfilepath(paramstr(0)) + "\error.log";
3. может лог-файл - read-only
4. попробуй глобальную переменную TextFile, открывая ее при запуске и закрывая при выходе

вообще, это странно. возможно, ошибка в другом месте кода.


 
Evgeniy_K   (2004-01-02 17:07) [22]

Файл создается, но при этом возникает указанная ошибка. Файл остается пустым.


 
Ihor Osov'yak ©   (2004-01-02 20:19) [23]

> Файл создается,

имхо, при rewrite ошибки не возникает

> Файл остается пустым
А после rewrite он и должен быть пустым.. Здесь уже без имхо.

напишите примерно такой фрагмент кода:

var err: integer;

AssignFile(fLog, extractfilepath(paramstr(0)) + "file.log");
Rewrite(fLog);
err := GetLastError;
if err <> 0 then
ShowMessage("control point one: " + SysErrorMessage(err));

и следите за сообщениями..

тогда точно будете уверенны возникает ли ошибка при rewrite

Зы. В особо клиничном случае загрузите filemon c www.sysinternals.com, настройте фильтр на имя своего файла и анализируйте все операции с файлом. FileMon среди прочего покажет какая операция завершилась с ошибкой. Вероятнее всего это будет не операция пересоздания файла.
Зы2. Чтобы исключить причины 1 и 2 упоминаемые в [7] - попытайтесь создать файл "ручками". Естественно, если ваше приложение не сервис (так как сервис может быть запущен от лица иной учетной записи, чем ваши "ручки").
на случай 7.3 - утилита с того же sysinternals - кажется называется handle, или handleview - показывает, какой процесс какие файлы держит открытыми..

Зы3. В конечном итоге обнаружите какую-то тривиальную причину, которая немного не в том "месте", где вы ищите..


 
Evgeniy_K   (2004-01-07 19:52) [24]

Косяк я так и не нашел, но сделал [21] 4. Всем огромное спасибо.



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

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

Наверх




Память: 0.52 MB
Время: 0.025 c
3-63004
ikis
2003-12-24 13:53
2004.01.20
dBASE зашифровался!


3-63025
eds
2003-12-22 11:34
2004.01.20
Возможно ли сделать доступ к БД в формате DBF многопользовательск


14-63362
pasha_golub
2003-12-29 12:26
2004.01.20
Ищу Settler


3-63016
Аноним
2003-12-23 05:37
2004.01.20
Выпадающий список


1-63173
real_dimedrol
2004-01-10 17:49
2004.01.20
Virtual Listview