Продолжение модуля:
Код:
{-------------------------------------------------------------------------------
Функция: THttpThread.HTTPGetFiles
Автор: ArhangeL
Дата: 2010.08.04
Входные параметры: Нет
Результат: Boolean
Описание: функция открывает файл NewFiles.lst и чтает его, загружая каждый файл по списку вниз.
Если загружен то возвращает true иначе false
-------------------------------------------------------------------------------}
function THttpThread.HTTPGetFiles:Boolean;
var
i: Integer;
FD: Boolean;
begin
Result:=False;
myDir := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)));
FilesURL := AdminForm.HTTPFilesEdit.Text;
if FileExists(myDir+'NewFiles.lst') then
begin
FilesToGet:=TStringList.Create;
try
FilesToGet.LoadFromFile(myDir+'NewFiles.lst');
except
Translator_MessageToLog('[Ошибка] Не удалось прочитать список файлов! Загрузка неудачна! Обновление неудачно!', '[Error] Unable to read file list! Downloading failed! Updating failed!', MainForm.log);
MainForm.StatusBar.Panels[1].Text := Translator('', '');
MainForm.FileProgressDesc.Caption := Translator('Файл: ', 'File: ');
FilesToGet.Free;
Result:=False;
end;
for i := 0 to FilesToGet.Count-1 do
begin
SendMessage(MainForm.Handle, PROGRESS_MAX, 1, FilesToGet.Count-1);
MainForm.StatusBar.Panels[1].Text := Translator('Загрузка файлов', 'Downloading files');
MainForm.FileProgressDesc.Caption := Translator('Файл: ' + FilesToGet.Strings[i], 'File: ' + FilesToGet.Strings[i]);
if (not DirectoryExists(myDir+ExtractFilePath(FilesToGet.Strings[i]))) then
ForceDirectories(myDir+ExtractFilePath(FilesToGet.Strings[i]));
FD := HTTPGetFile(FilesURL + ExtractFileName(FilesToGet.Strings[i]), myDir + FilesToGet.Strings[i], True);
if (FD) then
begin
Translator_MessageToLog('Файл: ' + ExtractFileName(FilesToGet.Strings[i])+' успешно загружен!', 'File: ' + ExtractFileName(FilesToGet.Strings[i])+' succsesfly downloaded!', MainForm.log);
end
else
begin
Translator_MessageToLog('Не удалось загрузить: ' + ExtractFileName(FilesToGet.Strings[i]), 'Bad load: ' + ExtractFileName(FilesToGet.Strings[i]), MainForm.Log);
Break;
end;
SendMessage(MainForm.Handle, PROGRESS, 1,i);
end;
MainForm.StatusBar.Panels[1].Text := Translator('Загрузка завершена!', 'Downloading Complited!');
MainForm.FileProgressDesc.Caption := Translator('Файл: ', 'File: ');
SendMessage(MainForm.Handle, PROGRESS, 1,0);
Translator_MessageBox('Все файлы успешно загружены!','All downloads succsesfly complited!','Успешно ;)','Succsesfly ;)',MB_OK or MB_ICONINFORMATION);
FilesToGet.Free;
Result:=True;
end else
begin
Translator_MessageToLog('[Ошибка] Список файлов ненайден! Загрузка неудачна! Обновление неудачно!', '[Error] Files-list not found! Downloading failed! Updating failed!', MainForm.log);
Result:=False;
FilesToGet.Free;
MainForm.StatusBar.Panels[1].Text := Translator('', '');
MainForm.FileProgressDesc.Caption := Translator('Файл: ', 'File: ');
end;
end;
вот код загрузки файла:
Код:
function HTTPGetFile(const FileURL,FileSaveDest:string;ShowProgress:Boolean):Boolean;
const
BufferSize=1024; //size of buffer
var
hSession,hURL:HInternet;
Buffer: array[0..BufferSize] of Byte;
BufferLen:LongWord;
Files:TFileStream;
Header,pAppName:string;
begin
Result:=False;
pAppName:='AppProgram';
Header:='User-Agent: AppProgram';
hSession:=InternetOpen(PChar(pAppName),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
try
hURL:=InternetOpenUrl(hSession,PChar(FileURL),PChar(Header),Length(header),INTERNET_FLAG_PRAGMA_NOCACHE or INTERNET_FLAG_RELOAD,0);
if (hURL<>nil) then
begin
try
DeleteUrlCacheEntry(PChar(FileURL));
Files:=TFileStream.Create(FileSaveDest,fmCreate);
repeat
InternetReadFile(hURL,@Buffer, SizeOf(Buffer),BufferLen);
Files.WriteBuffer(Buffer,BufferLen);
if (ShowProgress) then
begin
LT:=LT+BufferLen;
SendMessage(MainForm.Handle,PROGRESS,0,LT+BufferLen);
end;
until
BufferLen= 0;
FreeAndNil(Files);
Result:=True;
finally
InternetCloseHandle(hURL);
end;
end;
finally
InternetCloseHandle(hSession);
end;
LT:=0;
SendMessage(MainForm.Handle,PROGRESS,0,0);
end;
программа нормально функционирует! НО загружает только про 322 байта каждого файла.. ПОЧЕМУ?
Помогите пожалуйста найти ошибку=)
ошибок не выдает...