Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.011 c
3-63008
Serge
2003-12-22 18:25
2004.01.20
End of SELECT statement expected, instead found . ??????


1-63101
Unknown
2004-01-10 22:42
2004.01.20
TWinControl


3-63031
Pul
2003-12-22 16:26
2004.01.20
Виснет Interbase


1-63177
DDA
2004-01-10 15:59
2004.01.20
встречный вопрос по (Определение какая нажата кнопка)


14-63391
Undert
2003-12-28 17:07
2004.01.20
Max Payne 1





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский