Главная страница
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.48 MB
Время: 0.042 c
3-1102661653
moor38
2004-12-10 09:54
2005.01.09
Excel в Paradox 7


4-1100860875
PRM
2004-11-19 13:41
2005.01.09
Как запустить xcopy


3-1102431010
Fedor
2004-12-07 17:50
2005.01.09
Немогу удалить записи из таблицы


1-1103705554
Саша
2004-12-22 11:52
2005.01.09
Вариантный массив


1-1103551540
torch
2004-12-20 17:05
2005.01.09
file not found (somefile.dcu)