| 
      ...download a file from the Internet?
     | 
   
   
    | Autor: 
      Thomas Stutz     | 
   
  | [ Print tip 
] |   |   |   
 
 
 
{1.} 
 
uses 
  URLMon, ShellApi; 
 
function DownloadFile(SourceFile, DestFile: string): Boolean; 
begin 
  try 
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0; 
  except 
    Result := False; 
  end; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
const 
  // URL Location 
  SourceFile = 'http://www.google.com/intl/de/images/home_title.gif'; 
  // Where to save the file 
  DestFile = 'c:\temp\google-image.gif'; 
begin 
  if DownloadFile(SourceFile, DestFile) then 
  begin 
    ShowMessage('Download succesful!'); 
    // Show downloaded image in your browser 
    ShellExecute(Application.Handle, PChar('open'), PChar(DestFile), 
      PChar(''), nil, SW_NORMAL) 
  end 
  else 
    ShowMessage('Error while downloading ' + SourceFile) 
end; 
 
// Minimum availability: Internet Explorer 3.0 
// Minimum operating systems Windows NT 4.0, Windows 95 
 
{********************************************************} 
 
{2.} 
 
 
uses 
  Wininet; 
 
function DownloadURL(const aUrl: string): Boolean; 
var 
  hSession: HINTERNET; 
  hService: HINTERNET; 
  lpBuffer: array[0..1024 + 1] of Char; 
  dwBytesRead: DWORD; 
begin 
  Result := False; 
  // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); 
  hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); 
  try 
    if Assigned(hSession) then 
    begin 
      hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0); 
      if Assigned(hService) then 
        try 
          while True do 
          begin 
            dwBytesRead := 1024; 
            InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead); 
            if dwBytesRead = 0 then break; 
            lpBuffer[dwBytesRead] := #0; 
            Form1.Memo1.Lines.Add(lpBuffer); 
          end; 
          Result := True; 
        finally 
          InternetCloseHandle(hService); 
        end; 
    end; 
  finally 
    InternetCloseHandle(hSession); 
  end; 
end; 
 
{********************************************************} 
 
{3. Forces a download of the requested file, object, or directory listing from the origin server, 
    not from the cache 
} 
 
function DownloadURL_NOCache(const aUrl: string; var s: String): Boolean; 
var 
  hSession: HINTERNET; 
  hService: HINTERNET; 
  lpBuffer: array[0..1024 + 1] of Char; 
  dwBytesRead: DWORD; 
begin 
  Result := False; 
  s := ''; 
  // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); 
  hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); 
  try 
    if Assigned(hSession) then 
    begin 
      hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0); 
      if Assigned(hService) then 
        try 
          while True do 
          begin 
            dwBytesRead := 1024; 
            InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead); 
            if dwBytesRead = 0 then break; 
            lpBuffer[dwBytesRead] := #0; 
            s := s + lpBuffer; 
          end; 
          Result := True; 
        finally 
          InternetCloseHandle(hService); 
        end; 
    end; 
  finally 
    InternetCloseHandle(hSession); 
  end; 
end; 
 
//aufrufen 
var 
  s: String; 
begin 
 if DownloadURL('http://www.swissdelphicenter.ch/', s) then 
   ShowMessage(s); 
end; 
 
 
 
  
                       |