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

Вниз

IOResult = 103   Найти похожие ветки 

 
Илья   (2004-12-21 19:46) [0]

Привет всем.
Я всё таки не могу никак домучать эти файлы.
Проследил дебагером: после открытия файла IOResult = 0, после чтения = 103(файл не был открыт). Где ошибка?
Заранее благодарю.
Вот код:

var
 CurFileID : INTEGER;
 InFile, OutFile : FILE;
 BytesReaden, BytesWritten : INTEGER;
 BytesToCopy : INTEGER;
 TotalBytesCopied : Int64;
 TotalSize : Int64;
 Buffer : Pointer;
 InFileName, OutFileName : STRING;
begin
 //Setting buffer size
 BytesToCopy := 10 * 1024 * 1024; //Buffer size = 10 MB

 GetMem(Buffer, BytesToCopy);    
 CurFileID := 0;
 while (CurFileID < TotalFiles do
 begin      
   InFileName := FileArray[CurFileId];
   OutFileName := IncludeTrailingPathDelimiter(DestDir)+ExtractFileName(InFileName);

   if not FileExists(InFileName) then
   begin
     Inc(CurFileId);
     Continue;
   end;

   //Assign files
   AssignFile(InFile, InFileName);
   AssignFile(OutFile, OutFileName);
   Reset(InFile, 1);        
   ReWrite(OutFile, 1);
   TotalSize := get_FileSize(InFileName);
                                   
   TotalBytesCopied := 0;
   while (TotalBytesCopied < TotalSize) and (not Stopped) do
   begin
     //До сюда IOResult = 0
     BlockRead(InFile, Buffer^, BytesToCopy, BytesReaden);
     //Теперь IOResult = 103
     if IOResult = 0 then
     begin
       BlockWrite(OutFile, Buffer^, BytesReaden, BytesWritten);
       Inc(TotalBytesCopied, BytesWritten);
     end;                                                
   end;
                               
   CloseFile(InFile);
   CloseFile(OutFile);
   Inc(CurFileID);
 end;
 Dispose(Buffer);
end;


 
Anatoly Podgoretsky ©   (2004-12-21 20:01) [1]

Не видать проверки на открытие файла.


 
Anatoly Podgoretsky ©   (2004-12-21 20:02) [2]

Кстати задача решается одной строчкой CopyFile


 
Илья   (2004-12-22 20:46) [3]


> Кстати задача решается одной строчкой CopyFile

Честно скажу, я знаю!
Уже всё таки пора завязывать с этой программой, а то в моих темах скоро будет больше всего слов CopyFile! :)
Просто у меня есть определённый ран-тайм алгоритм.


> Не видать проверки на открытие файла.

Что - то типа:

if IOResult = 103 then
   begin
     MessageBox(0, "Error opening file " + InFileName, "Error", MB_OK+MB_ICONSTOP);
     Continue;
   end;

???


 
begin...end ©   (2004-12-22 20:49) [4]

> [3] Илья   (22.12.04 20:46)

А где у Вас {$I-} ?


 
Anatoly Podgoretsky ©   (2004-12-23 00:14) [5]

Это слишком поздно,
надо и после Reset(InFile, 1);
и после ReWrite(OutFile, 1);
и также после BlockRead
и так далее, но особо первые две


 
Anatoly Podgoretsky ©   (2004-12-23 00:19) [6]

И еще вместо обработки IOResult использовать try except
а также перейти на TFileStream


 
Илья   (2004-12-24 03:48) [7]


> А где у Вас {$I-} ?


После implementation :)


> Это слишком поздно,
> надо и после Reset(InFile, 1);
> и после ReWrite(OutFile, 1);
> и также после BlockRead
> и так далее, но особо первые две


Честно скажу файлами практически не занимался в основоном работал с графикой. Но почему файл будет закрываться после каждой функции? Этого я не понимаю.

Идея программы такова:
Копировать с повреждённых носителей определённые файлы, и заменять несчитываемые байты нулями.



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

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

Наверх




Память: 0.49 MB
Время: 0.026 c
14-1103725095
oldman
2004-12-22 17:18
2005.01.09
Господа модераторы!


14-1103124078
Opilki_inside
2004-12-15 18:21
2005.01.09
Декомпилировать SW Flash


1-1102758115
Kolan
2004-12-11 12:41
2005.01.09
Мне кажется так делать нельзя, подскажите как нодо.


3-1102352248
Сергей_26
2004-12-06 19:57
2005.01.09
Вставка картинки в graphic поле таблици


14-1103636976
SLP
2004-12-21 16:49
2005.01.09
ситуация в Закарпатье