Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.05.2006, 09:31
starik starik вне форума
Прохожий
 
Регистрация: 20.05.2006
Сообщения: 4
Репутация: 10
По умолчанию как избежать ошибки 183?

как избежать ошибки 183?
присоединяю и открываю текстовый файл(на чтение или запись)
.........
Var f:TextFile;
.........
AssignFile(f,'...');
ReWrite(f);
........
вылезает 183, если обойду проверку в этом месте - то 183 появится при попытке записи, закрытия ...
Аналогичная картина с созданием и сменой подкаталогов
MkDir('..'),ChDir('..').
Подскажите, что я тут не так делаю???
Ответить с цитированием
  #2  
Старый 21.05.2006, 20:28
starik starik вне форума
Прохожий
 
Регистрация: 20.05.2006
Сообщения: 4
Репутация: 10
По умолчанию

Собственно вопрос о том, что при компилировании ошибок не выдается, а при исполнении вылезает 183 - может надо какое-н указание компилятору писать.
Причем,почему-то в некоторых программах у меня работа с внешними файлами проходит нормально, а иногда без отключения проверки операций ввода-вывода на все команды работы с присоединенными файлами вылезает 183. Не найду причину никак!!
Ответить с цитированием
  #3  
Старый 22.05.2006, 18:57
AlexZL AlexZL вне форума
Новичок
 
Регистрация: 06.01.2006
Сообщения: 87
Репутация: 20
Подмигивание

пробовал у себя
Цитата:
AssignFile(f,'...');
ReWrite(f);
MkDir('..'),ChDir('..');
все нормально работает без ошибок и на Delphi 7 и в BDS 2006
думаю в таком случае вам надо юзать директиву компилера {$I-} чтоб отрубить встроенную обработку IO исключений, а на ошибки проверять самому через
Код:
function IOResult(): Integer;
Ответить с цитированием
  #4  
Старый 22.05.2006, 20:22
starik starik вне форума
Прохожий
 
Регистрация: 20.05.2006
Сообщения: 4
Репутация: 10
По умолчанию

Я этой директивой отключаю проверку IO, на ошибку не проверяю - считая, что условно при создании файла ошибки быть не может. При этом в дальнейшем при каждой попытке записи в файл вылезает 183. Вопрос - при использовании {$I-}, а после создания файла {$I+}
почему значение IOResult не =0 при следующей операции с файлом.
Ответить с цитированием
  #5  
Старый 22.05.2006, 21:05
AlexZL AlexZL вне форума
Новичок
 
Регистрация: 06.01.2006
Сообщения: 87
Репутация: 20
По умолчанию

в хелпе по Делфи IO ошибки под номером 138 НЕ нашел (хотя написано: ошибки IO с 100 по 149)

попробуй вызвать апишную GetLastError, и код ошибки посмотреть в справке
по ВыньАПИ 32. там точно ВСЕ ошибки есть и детально описаны
Ответить с цитированием
  #6  
Старый 22.05.2006, 21:22
starik starik вне форума
Прохожий
 
Регистрация: 20.05.2006
Сообщения: 4
Репутация: 10
По умолчанию

183 -невозможно создать файл, так как он уже существует. Для меня это не ошибка, так как я допускал и перезапись файла.

Не уверен, что это особо корректно, но вставив ненужную мне проверку кода ошибки IOresult, у меня стало все работать без проблем
.................................
AssignFile(f,'file.txt');
{$I-}
ReWrite(f);
If IOresult=183 then begin end;
{$I+}
Спасибо за подсказки.
Ответить с цитированием
  #7  
Старый 07.11.2006, 23:23
Аватар для Rom@NS
Rom@NS Rom@NS вне форума
Прохожий
 
Регистрация: 05.11.2006
Адрес: Россия
Сообщения: 18
Репутация: 10
По умолчанию

Цитата:
Сообщение от starik
как избежать ошибки 183?
присоединяю и открываю текстовый файл(на чтение или запись)
.........
Var f:TextFile;
.........

я так понял, это ошибка чтения или записи?

попробуй так

if FileExists(Filename)
then
begin
AssignFile(F,Filename);
reset(f);//открыть для чтения
append(f);//установить режим дополнения
end;

И никакие директивы отключать не надо!
Ответить с цитированием
  #8  
Старый 08.11.2006, 19:41
Аватар для Ross
Ross Ross вне форума
Активный
 
Регистрация: 15.10.2005
Адрес: Казань
Сообщения: 250
Репутация: 30
По умолчанию

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

Код:
    if FileExists(GetCurrentDir + '\' + FileUs) = true then DeleteFile(GetCurrentDir + '\' + FileUs);
    AssignFile(UsersFile, GetCurrentDir + '\' + FileUs);
    {$I-}
    Rewrite(UsersFile);
    {$I+}
    if IOResult <> 0 then
      begin
        CloseFile(UsersFile);
        AssignFile(UsersFile, GetCurrentDir + '\' + FileUs);
        Reset(UsersFile);
        Append(UsersFile);

Файл то он создаёт, но отказывается писать в него, почему так?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter