Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
1-1103646996
Ландграф Павел
2004-12-21 19:36
2005.01.09
получение "полного пути" - из .. cls получить c: folder cls


3-1102607156
hawkins
2004-12-09 18:45
2005.01.09
не работает IBSQLMonitor


8-1096996658
ser_ega
2004-10-05 21:17
2005.01.09
BitMap


14-1103631558
Vaitek
2004-12-21 15:19
2005.01.09
Ааа вот вы где все!


14-1103653939
NailMan
2004-12-21 21:32
2005.01.09
Нужно вспомнить где это(MMP) проходило...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский