// Dateien aus dem Netz laden:// Getestet mit D4 unter WinME
// Variante 1
// Download mittels (verstecktem) Internetexplorer. Es wird der
// Download-Dialog angezeigt. Bei anderen Browsern muss man 'IEXPLORE.EXE'
// durch Pfad und Name des entsprechenden Browser ersetzen. Trotzdem
// muss es nicht funktionieren.
OPERA z.B.
versteckt sich nicht.
uses shellapi;
procedure TForm1.Button2Click(Sender: TObject);
begin
shellexecute(handle,'open','IEXPLORE.EXE',
'http://www.dbrsoftware/eurostck.zip',nil,sw_hide);
end;
//-----------------------------------------------------------------------
// Variante 2
// Download ohne irgendeine Anzeige. Das Programm steht in der
Zwischenzeit.
uses urlmon;
procedure TForm1.Button2Click(Sender: TObject);
var quelle,ziel:string;
begin
quelle:='http://www.dbrsoftware/eurostck.zip';
ziel:='c:\eurostck.zip';
URLDownloadToFileA(nil,pchar(quelle),pchar(ziel),0, nil);
end;
//-----------------------------------------------------------------------
// Variante 3
// Beispiel mittels HTTP mit einem Button, einer Statusbar und der
// Komponente
TNMHTTP. Die Statusbar hat zwei Panels.
var
EmpfangeneBytes,GesendeteBytes,BytesInsgesamt:string;
zeit:longword;
procedure TForm1.FormCreate(Sender: TObject);
begin
statusbar1.panels[0].width:=round(statusbar1.width * 0.67);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if StatusBar1=nil then exit;
StatusBar1.panels[0].text:='';
StatusBar1.panels[1].text:='';
NMHTTP1.InputFileMode:=True;
NMHTTP1.Port:=80;
NMHTTP1.Body:='c:\eurostck.zip';
try
zeit:=gettickcount;
NMHTTP1.Get('http://www.dbrsoftware/eurostck.zip');
except
end;
end;
procedure TForm1.NMHTTP1Failure(Cmd: CmdType);
begin
StatusBar1.SimpleText :='Fehler
'+inttostr(NMHTTP1.ReplyNumber)+
' aufgetreten';
beep;
try
deletefile(NMHTTP1.Body);
except
end;
end;
procedure TForm1.NMHTTP1PacketRecvd(Sender: TObject);
begin
EmpfangeneBytes:=FormatFloat('#,##0',NMHTTP1.BytesRecvd);
BytesInsgesamt:=FormatFloat('#,##0',NMHTTP1.BytesTotal);
StatusBar1.panels[0].text:=EmpfangeneBytes+' Bytes von '+
BytesInsgesamt+' Bytes empfangen';
StatusBar1.panels[1].text:=
FormatFloat('#,##0.00',NMHTTP1.BytesRecvd/(1024 *
((gettickcount-zeit)/ 1000)))+' KB/Sek.';
end;
procedure TForm1.NMHTTP1Success(Cmd: CmdType);
begin
GesendeteBytes:=FormatFloat('#,##0',NMHTTP1.BytesSent);
StatusBar1.panels[0].text:='Fertig ('+
EmpfangeneBytes+' Bytes empfangen und '+
GesendeteBytes+' Bytes gesendet)';
StatusBar1.panels[1].text:='';
beep;
end;
//-----------------------------------------------------------------------
// Variante 4
// Über FTP mit der Komponente
TNMFTP.
const tmp='c:\versuch.txt';
procedure TForm1.Button1Click(Sender: TObject);
begin
if NMFTP1.connected then NMFTP1.disconnect;
NMFTP1.Host:='dbr.software.de';
NMFTP1.Port:=21;
NMFTP1.UserID:='ID12345';
NMFTP1.TimeOut:=30000;
NMFTP1.password:='mypassword';
NMFTP1.connect;
NMFTP1.Download('/delphi/test.txt',tmp);
end;
procedure TForm1.NMFTP1ConnectionFailed(Sender: TObject);
begin
showmessage('Keine Verbindung');
end;
procedure TForm1.NMFTP1Failure(var handled: Boolean;
Trans_Type: TCmdType);
begin
if NMFTP1.connected then NMFTP1.disconnect;
showmessage('Fehler aufgetreten');
end;
procedure TForm1.NMFTP1InvalidHost(var Handled: Boolean);
begin
showmessage('Host nicht gefunden');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if NMFTP1.connected then begin
NMFTP1.disconnect;
showmessage('Verbindung getrennt');
end;
end;
procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
begin
NMFTP1.disconnect;
showmessage('Übertragung fertig');
end;
|