Никита К.
1594 повідомлення
#16 років тому
Есть ли где-нибудь описание ВСЕХ возможных типов исключений, возникающих в Delphi, и возможных причин их появления?
Если да - подскажите, пожалуйста.
Если нет - то подскажите что-нибудь насчёт такой ошибки:
I/O error 32.
Понятно, что ошибка ввода-вывода в файл.
Ругается на строчку
reset(f);

AssignFile(f, AppName);
Reset(AppName);
Денис Авдеев
599 повідомлень
#16 років тому
Это ошибка ввода-вывода. Возникать она может по разным причинам, например, нет открываемого файла, файл уже кем-то используется.
Виктор Т.
1036 повідомлень
#16 років тому
Файл уже открыт. Возможно даже Вашим приложением)
Никита К.
1594 повідомлення
#16 років тому
Файл есть точно так как этот код внутри условия

      if(FileExists(AppName))


then


......


Да вроде всё проверил. CloseFile(f); Присутствует везде...
А что там насчёт описания всех ошибок?
Evgenij L.
50 повідомлень
#16 років тому
А "AppName" это у вас что? если имя запущенного приложения, то кол-во clos'ов не имеет значения-файл всё равно будет в использовании.
Никита К.
1594 повідомлення
#16 років тому
Нет, AppName - это файл проекта, который создаётся прогой.
Просто раньше работало. Не помню что-то изменил - глючить начало
Денис Захаров
322 повідомлення
#16 років тому
Может глупое предложение. Reset(f) я бы написал
Кусок из хелпа
var
F: file;
begin
{$I-}
AssignFile(F, FileName);
FileMode := 0; {Set file access to read only }
Reset(F);
CloseFile(F);
{$I+}
FileIsThere := (IOResult = 0) and (FileName <> '';
end; { FileIsThere }
Игорь Хомич
278 повідомлень
#16 років тому
Народ а повнимательнее к коду никто не присматривался


AssignFile(f, AppName);
Reset(AppName);


попробуйте написать так

AssignFile(f, AppName);
Reset(f);
Ярослав С.
778 повідомлень
#16 років тому
Никита К.
1594 повідомлення
#16 років тому
Это я протупил.
Сюда не так написал.
На самом деле там reset(f)!!!!
Игорь Хомич
278 повідомлень
#16 років тому
В догонку, попробуйте такой вариант:

var
f:textfile;
begin
try
AssignFile(f,'1.txt');
reset(f);
closeFile(f);
except
on E:Exception do ShowMessage(E.ClassName+' '+E.Message)
end;
end;
Никита К.
1594 повідомлення
#16 років тому
А смысл?
Ошибки это не исправит - только покажет класс ошибки. А класс ошибки и так известен
Владимир К.
48 повідомлень
#16 років тому
Anexroid пройдись по всему коду программы, продумай логику выполнения всех процедур и функций, и проверь везде ли ты закрывал файл. Ошибка только в этом.
Никита К.
1594 повідомлення
#16 років тому
Цитата:
Есть ли где-нибудь описание ВСЕХ возможных типов исключений, возникающих в Delphi, и возможных причин их появления?

Может ссылочку всё-таки кто-нибудь подкинет? На будущее
Тут М.
626 повідомлень
#16 років тому
Как вариант - помониторить FileMon'ом и посмотреть что именно происходит с файлом. Заодно виндовый код ошибки увидите - он более информативен.
Никита К.
1594 повідомлення
#16 років тому
А конкретнее?
Оффтопик
Что-то я не совсем понял...
Тут М.
626 повідомлень
#16 років тому
В гугле FileMon наберите - там все очень конкретно...
Николай М.
1895 повідомлень
#16 років тому
I/O error 32
Цитата:
ERROR_SHARING_VIOLATION: Файл существует, но используется другим приложением...


используйте более гибкий FileStream.
Александр К.
4607 повідомлень
#16 років тому
Уважаемый Anexroid, чудес не бывает. Посмотрите свой код еще раз, может быть Вы уже переприсвоили значение переменной AppName, открыли для других целей и забыли, а здесь думаете о новом файле (например AppNameNew) но продолжаете настойчиво использовать старое имя.
Не спешите и все получится.
Тут М.
626 повідомлень
#16 років тому
Очень по теме...
Оффтопик
Дорогие ученые! У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит?