Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Битые файлы


Автор: Apls 11.9.2007, 06:48
Есть на компе у меня папка, где в папки я зайти не могу, пишет недостаточно прав, а картинки - просмотр недоступен, не знаю что я с ней сделал, но папка очень загадочная =).
Я пытаюсь найди файлы по маске *.jpg, если нахожу то произвожу с ними какие то действия, так вот если вызывается процедура открытия файла, выдается ошибка 103 на команде reset(f,2); если так {$I-} reset(f,2); {$I+}, то ошибка выдается на blockread, как заранее предупредить таковую ошибку и просто пропустить этот файл? Есть, например, функция для проверки, открыт файл уже или нет, думаю она помогла бы.
З.Ы. Работаю с правами администратора.

Автор: SergeBS 11.9.2007, 07:22
Apls
Читай доки. Надо: 
Код

var
  F: file of Byte;
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(F, OpenDialog1.FileName);
    {$I-}
    Reset(F);
    {$I+}
    if IOResult = 0 then
    begin
      MessageDlg('File size in bytes: ' + IntToStr(FileSize(F)),
        mtInformation, [mbOk], 0);
      CloseFile(F);
    end
    else
      MessageDlg('File access error', mtWarning, [mbOk], 0);
  end;
end;

Вообще-то, такая тема - для начинающих.

Автор: Alexeis 11.9.2007, 10:42
В делфи уже принято использовать защищенные секции 
Код

try

except / finally

end;


Добавлено через 4 минуты и 5 секунд
Между try except идет опасный блок, после except идет блок обработки ошибки, который выполняет в случае ошибки, если там ничего не нужно делать, то просто ставим finally (код в ней выполняется в любом случае).

Автор: Apls 11.9.2007, 19:39
Хм, оба варианта почему то не помогли, ошибка выдается все равно.
Я просто обрамил весь код в {$I-} {$I+} и все заработало. 

Автор: Alexeis 11.9.2007, 20:10
Apls, работает, работает просто под дебагом исключения по дефолту все равно генеряться. Если запустить экзешник (или отключить генерацию при дебаге) то все будет красиво.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)