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

Вниз

Как поставить условие записи BlockWrite?   Найти похожие ветки 

 
буффер   (2009-10-03 06:45) [0]

Пытаюсь загрузить файл с http:\\ и при попытке копирования файла, с помощью BlockWrite возникает ошибка записи если целевой файл не найден. Как поставить условие так, чтобы ошибка не возникала?
 ЗЫ. или как проверить наличие файла...


function GetInetFile(const fileURL, FileName: string): boolean;
const
 BufferSize = 1024;
var
 hSession, hURL: HInternet;
 Buffer: array[1..BufferSize] of Byte;
 BufferLen: DWORD;
 f: file;
 sAppName: string;
begin
 Result := False;
 sAppName := ExtractFileName(Application.ExeName);
 hSession := InternetOpen(PChar(sAppName),
 INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
 try
   hURL := InternetOpenURL(hSession, PChar(fileURL), nil, 0, 0, 0);
   try
     AssignFile(f, FileName);
     Rewrite(f,1);
     repeat
       InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
       Application.ProcessMessages();
       BlockWrite(f, Buffer, BufferLen);
       Application.ProcessMessages();
     until
     BufferLen = 0;
     CloseFile(f);
     Result := True;
   finally
     InternetCloseHandle(hURL);
   end;
 finally
   InternetCloseHandle(hSession);
 end;
end;


 
DVM ©   (2009-10-03 11:25) [1]


> Как поставить условие так, чтобы ошибка не возникала?

Писать с помощью функций WinAPI и обрабатывать результаты функций.
Или хотя бы с пом оберток что в SysUtils.

AssignFile, Rewrite и т.д. на мой взгляд неудобные.


 
Leonid Troyanovsky ©   (2009-10-03 13:10) [2]


> буффер   (03.10.09 06:45)  

> целевой файл не найден. Как поставить условие так, чтобы
> ошибка не возникала?

RTFM: IOResult function, example.

> DVM ©   (03.10.09 11:25) [1]

> Писать с помощью функций WinAPI и обрабатывать результаты

TFileStream forever.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2009-10-03 13:16) [3]


> буффер   (03.10.09 06:45)  

>      Rewrite(f,1);

Да, и 1 смотрится нелепо.

TFileStream forever ;)

--
Regards, LVT.


 
DVM ©   (2009-10-03 15:22) [4]


> Leonid Troyanovsky ©   (03.10.09 13:10) [2]


> TFileStream forever ;)

А, ну да, как же я забыл о нем. :)


 
Anatoly Podgoretsky ©   (2009-10-03 16:56) [5]

Такой ошибки быть не может, или файл будет создан или произойдет ошибка раньше, на rewrite


 
intlex   (2009-10-04 23:32) [6]

надо проверить значение BufferLen, возможно при чтении произошла ошибка



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

Форум: "Начинающим";
Текущий архив: 2009.11.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1253706262
McSimm
2009-09-23 15:44
2009.11.22
Pidgin натрепал про вас :)


11-1207858107
YuriyM
2008-04-11 00:08
2009.11.22
Работа с KOLSQLiteStatic под Lazarus


1-1225286061
DelphiLexx
2008-10-29 16:14
2009.11.22
Динамические типы в классах


2-1254993428
Маркабес
2009-10-08 13:17
2009.11.22
sql


15-1253630278
TRSteep
2009-09-22 18:37
2009.11.22
Авто дописывание кода





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский