Śiąganie plików z internetu.

0

Witam. Chciałem napisać program, który ściągałby bazę danych z internetu i wyświetlił tę bazę. Czy jest to możliwe?

0

Jak najbardziej jest możliwe :D -> FAQ oraz http://4programmers.net/file.php?id=1735

Nie chciało się poszukać ??

0

dzieki. Zapomniałem poszukać. Teraz wszystko jasne. A nie wiesz czy można zrobić pasek postępu? Tzn. plik się sciąga a progressbar wskazuje ile sie ściągnęło.

0
lewymati napisał(a)

dzieki. Zapomniałem poszukać. Teraz wszystko jasne. A nie wiesz czy można zrobić pasek postępu? Tzn. plik się sciąga a progressbar wskazuje ile sie ściągnęło.

mozesz uzyc komponentu httpget - dziala tylko na porcie 80 ale pokazanie progressbara jest tam dziecinnie proste :)

0

a skąd wziąć ten komponent?

0
lewymati napisał(a)

a skąd wziąć ten komponent?

stad: imieniny

0
lewymati napisał(a)

czy można zrobić pasek postępu?

Bardzo dobry kod Adama Boducha z progresem

uses
   WinInet;

  private
   procedure Download(const URL: String; FileName: String);


procedure TForm1.Download(const URL: String; FileName: String);
var
  Buffer : array[1..1024] of Byte; // bufor zawierający ściągnięty fragment pliku
  hSession, hURL : HINTERNET;
  dwRead : DWORD; // ilość odczytanych danych
  dwSize : DWORD;  // rozmiar pliku
  F : File;
  pBuf : Pointer;
  dwBufLen : DWORD;
  dwIndex : DWORD;
  TotalRead : Integer;
begin
  hSession := InternetOpen('Fast Download', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  Application.ProcessMessages;

  try
  { otwarcie podanego adresu URL }
    hURL := InternetOpenURL(hSession, PChar(URL), nil, 0, 0, 0);
    Application.ProcessMessages;

    dwBufLen := 1024;
    dwIndex := 0;
    GetMem(pBuf, dwBufLen);

    { pobranie informacji na temat wielkości pliku }
    HttpQueryInfo(hURL, HTTP_QUERY_CONTENT_LENGTH,
                              pBuf, dwBufLen, dwIndex);
    dwSize := StrToInt(StrPas(pBuf));
    ProgressBar.Max := (dwSize div 1024);

    FreeMem(pBuf, dwBufLen);

    try
      AssignFile(F, FileName);
      try
        Rewrite(F, 1);
        repeat
          InternetReadFile(hURL, @Buffer, SizeOf(Buffer), dwRead);
          BlockWrite(F, Buffer, dwRead); // zapisanie buforu do pliku
          TotalRead := TotalRead + dwRead;

          Application.ProcessMessages;
          Label1.Caption := 'Pobrano ' + IntToStr(TotalRead div 1024) + ' kB z ' + IntToStr(dwSize div 1024) + ' kB';
          ProgressBar.Position := TotalRead div 1024;
        until dwRead = 0;
      finally
        CloseFile(F);
      end;
    finally
      InternetCloseHandle(hSession);
    end;
  finally
    InternetCloseHandle(hURL);
  end;
  Label1.caption := 'Gotowe !';
end;

//wywołanie ściągania

begin
try
  begin
     Label1.Caption := 'Łączenie...';
     DownloadInfo('http://www.strona.pl/plik.exe',ExtractFilePath(Application.ExeName) + 'plik.exe');
  end;
   except
       Label1.Caption := 'Błąd połączenia';
   end;
end;
0

Wielkie dzięki wam wszystkkim. Wie może ktoś czy można zapisywać pliki do internetu znając adres ftp, hasło itd.?

0
lewymati napisał(a)

Wielkie dzięki wam wszystkkim. Wie może ktoś czy można zapisywać pliki do internetu znając adres ftp, hasło itd.?

tak wiemy. Indy + idFTP + google + dema do Indy9 i juz masz. Zamierzasz nas o wszystko pytac?

0

ok. Już wszystko wiem. Dzięki wam wszystkim

1 użytkowników online, w tym zalogowanych: 0, gości: 1