A 
		
				
				
			
		Artexoid
Вот фигня какая-то у меня.
Загружаю я файлы вот этой маленькой процедуркой
	
	
	
	
		
А там фигня. Такая темя короче запускаю я загрузку, она загружает загружает, как 5 файлов загруэит пишет ошибку типо не может подключиться к серверу. Файлы я с народа качаю может проблемя в самом сервере ????? Помогите мне чем-нибудь я тут уже часа 3 голову ломаю, как я только не изменял это процедурку и все равно одно и тоже. Вот это ее исходный вариант.
				
			Загружаю я файлы вот этой маленькой процедуркой
		Код:
	
	function FtpDownloadFile(strHost, strUser, strPwd: string;
 Port: Integer; ftpDir, ftpFile, TargetFile: string; ProgressBar: TProgressBar; LabelX: TLabel): Boolean;
 function FmtFileSize(Size: Integer): string;
 begin
   if Size >= $F4240 then
     Result := Format('%.2f', [Size / $F4240]) + ' Mb'
   else
   if Size < 1000 then
     Result := IntToStr(Size) + ' bytes'
   else
     Result := Format('%.2f', [Size / 1000]) + ' Kb';
 end;  
const
 READ_BUFFERSIZE = 4096;  // or 256, 512, ...
var
 hNet, hFTP, hFile: HINTERNET;
 buffer: array[0..READ_BUFFERSIZE - 1] of Char;
 bufsize, dwBytesRead, fileSize: DWORD;
 sRec: TWin32FindData;
 strStatus: string;
 LocalFile: file;
 bSuccess: Boolean;
begin
 Result := False;  
 { Open an internet session }  
 hNet := InternetOpen('Program_Name', // Agent
                       INTERNET_OPEN_TYPE_PRECONFIG, // AccessType  
                       nil,  // ProxyName  
                       nil, // ProxyBypass  
                       0); // or INTERNET_FLAG_ASYNC / INTERNET_FLAG_OFFLINE
 {  
   Agent contains the name of the application or
   entity calling the Internet functions  
 }  
 { See if connection handle is valid }
 if hNet = nil then
 begin  
   ShowMessage('Unable to get access to WinInet.Dll');
   Exit;  
 end;  
 { Connect to the FTP Server }  
 hFTP := InternetConnect(hNet, // Handle from InternetOpen
                         PChar(strHost), // FTP server  
                         port, // (INTERNET_DEFAULT_FTP_PORT),  
                         PChar(StrUser), // username  
                         PChar(strPwd),  // password  
                         INTERNET_SERVICE_FTP, // FTP, HTTP, or Gopher?
                         0, // flag: 0 or INTERNET_FLAG_PASSIVE  
                         0);// User defined number for callback  
 if hFTP = nil then
 begin
   InternetCloseHandle(hNet);  
   messagebox(0,PChar(Format('Óäàëåííûé ñåðâåð "%s" íå íàéäåí. Âîçìîæíî îòñóòñòâóåò ñîåäèíåíèå ñ èíòåðíåòîì',[strHost])),
                'Îøèáêà',mb_ok or mb_iconerror);
   //ShowMessage(Format('Host "%s" is not available',[strHost]));
   form3.update.Interval:=2;
   form3.update.Enabled:=false;
   form3.update.Tag:=0;
   form3.Label15.Font.Color:=clMedGray;
   form3.proc1.Font.Color:=clMedGray;
   form3.Label17.Font.Color:=clMedGray;
   form3.proc2.Font.Color:=clMedGray;
   form3.Label18.Font.Color:=clMedGray;
   form3.proc3.Font.Color:=clMedGray;
   form3.Label22.Font.Color:=clMedGray;
   form3.procdownload.Font.Color:=clMedGray;
   form3.kolvo.Font.Color:=clMedGray;
   form3.SpeedButton1.Enabled:=true;
   form3.ProgressBar1.Position:=0;
   form3.ProgressBar2.Position:=0;
   form3.ProgressBar3.Position:=0;
   form3.ProgressBar4.Position:=0;
   form3.proc1.Caption:='0%';
   form3.proc2.Caption:='0 Kb of 0Kb / 0%';
   form3.proc3.Caption:='0%';
   form3.procdownload.Caption:='0 Kb of 0Kb / 0%';
   form3.kolvo.Caption:='0/0';
   loadlist.Destroy;
   spsfraz.Destroy;
   spsnewfraz.Destroy;
   form3.listtext.Update;
   Exit;
 end;
 { Change directory }
 bSuccess := FtpSetCurrentDirectory(hFTP, PChar(ftpDir));
 if not bSuccess then
 begin
   InternetCloseHandle(hFTP);
   InternetCloseHandle(hNet);
   ShowMessage(Format('Cannot set directory to %s.',[ftpDir]));  
   Exit;
 end;
 { Read size of file }
 if FtpFindFirstFile(hFTP, PChar(ftpFile), sRec, 0, 0) <> nil then
 begin  
   fileSize := sRec.nFileSizeLow;
   // fileLastWritetime := sRec.lastWriteTime  
 end else
 begin  
   //{îàçðûâ
   InternetCloseHandle(hFTP);
   InternetCloseHandle(hNet);
   messagebox(0,PChar(Format('Óäàëåííûé ñåðâåð "%s" íå îòâå÷àåò. Îøèáêà ñîåäèíåíèÿ FTP. Ïåðåçàïóñòèòå îáíîâëåíèå.',[strHost])),
                'Îøèáêà',mb_ok or mb_iconerror);
   form3.update.Enabled:=false;
   form3.update.Tag:=0;
   form3.Label15.Font.Color:=clMedGray;
   form3.proc1.Font.Color:=clMedGray;
   form3.Label17.Font.Color:=clMedGray;
   form3.proc2.Font.Color:=clMedGray;
   form3.Label18.Font.Color:=clMedGray;
   form3.proc3.Font.Color:=clMedGray;
   form3.Label22.Font.Color:=clMedGray;
   form3.procdownload.Font.Color:=clMedGray;
   form3.kolvo.Font.Color:=clMedGray;
   form3.SpeedButton1.Enabled:=true;
   form3.ProgressBar1.Position:=0;
   form3.ProgressBar2.Position:=0;
   form3.ProgressBar3.Position:=0;
   form3.ProgressBar4.Position:=0;
   form3.proc1.Caption:='0%';
   form3.proc2.Caption:='0 Kb of 0Kb / 0%';
   form3.proc3.Caption:='0%';
   form3.procdownload.Caption:='0 Kb of 0Kb / 0%';
   form3.kolvo.Caption:='0/0';
   Exit;
   //}
 end;
 { Open the file }
 hFile := FtpOpenFile(hFTP, // Handle to the ftp session
                      PChar(ftpFile), // filename
                      GENERIC_READ, // dwAccess
                      FTP_TRANSFER_TYPE_BINARY, // dwFlags
                      0); // This is the context used for callbacks.
 if hFile = nil then
 begin
   InternetCloseHandle(hFTP);
   InternetCloseHandle(hNet);
   Exit;
 end;
 { Create a new local file }
 AssignFile(LocalFile, TargetFile);
 {$i-}
 Rewrite(LocalFile, 1);
 {$i+}
 if IOResult <> 0 then
 begin  
   InternetCloseHandle(hFile);
   InternetCloseHandle(hFTP);
   InternetCloseHandle(hNet);
   Exit;  
 end;
 dwBytesRead := 0;
 bufsize := READ_BUFFERSIZE;  
 while (bufsize > 0) do
 begin
   Application.ProcessMessages;
   if not InternetReadFile(hFile,  
                           @buffer, // address of a buffer that receives the data
                           READ_BUFFERSIZE, // number of bytes to read from the file  
                           bufsize) then Break; // receives the actual number of bytes read
   if (bufsize > 0) and (bufsize <= READ_BUFFERSIZE) then
     BlockWrite(LocalFile, buffer, bufsize);
   dwBytesRead := dwBytesRead + bufsize;
   { Show Progress }
   ProgressBar.Position := Round(dwBytesRead * 100 / fileSize);
   LabelX.Caption := Format('%s of %s / %d %%',[FmtFileSize(dwBytesRead),FmtFileSize(fileSize) ,ProgressBar.Position]);
 end;
 CloseFile(LocalFile);
 InternetCloseHandle(hFile);
 InternetCloseHandle(hFTP);
 InternetCloseHandle(hNet);
 Result := True; 
	 
	 
	 
	 
	 
 
 
	

 
	