ich denke es funzt jetzt
ich poste einfach mal meine lösung
zur erklärung:
das programm soll die in Edt_URL.Text angegebene Seite runterladen und den Quelltext in SynMemo anzeigen.
ich habe einen Log eingebaut, wo alle aktionen reinkommen, sowie eine history, die "alte" adressen speichert.
Log is ne procedure, History is ne TStringList und Edt_URL ne ComboBox (jaja, name wird bald geändert
)
eine procedure zum eigentlichen pingen
Delphi-Quellcode:
procedure TForm1.DoPing(Host:String);
//Pingen
begin
try //Pingen
Log('PING '+Host);
Ping.Host:=Host;
Ping.Ping;
except //bei Fehler
Log('PING '+Host+' failed');
ShowMessage('Host wurde nicht gefunden');
SynMemo.Text:=' Seite wurde nicht gefunden'+#13+
' Bitte überprüfen sie die Adresse'+#13+#13+
'Sie dürfen folgende Adressmuster eingeben:'+#13+
' - www.abc.xyz'+#13+
' - abc.xyz';
end;
end;
eine (ButtonClick) um die
URL entsprechend der eingabe zu kürzen oder zu ergänzen
Delphi-Quellcode:
procedure TForm1.Btn_GetClick(Sender: TObject);
//URL Ergänzen und Ping einleiten
begin
//URL ergänzen bzw kürzen
if copy(Edt_URL.Text,1,7)='
http://'
then
DoPing(copy(Edt_URL.Text,8,Length(Edt_URL.Text)-7))
else
if copy(Edt_URL.Text,1,4)='
www.'
then
DoPing(Edt_URL.Text)
else
DoPing('
www.'+Edt_URL.Text);
History.Add(Ping.Host);
//History
Edt_URL.Clear;
Edt_URL.Items.AddStrings(History);
Edt_URL.Text:=Ping.Host;
end;
und eine die beim Pong die seite runterlädt
Delphi-Quellcode:
procedure TForm1.PingReply(ASender: TComponent; const AReplyStatus: TReplyStatus);
//Bei PingReply Seite Laden
var Temp:Integer;
begin
Log('PONG from '+Ping.Host); //Log
if SynMemo.Text<>'' then //event Speichern
Temp:=Application.MessageBox('Möchten sie Die Aktuelle Seite speichern?',Titel,MB_YESNOCANCEL);
if Temp<>IDCANCEL then //nicht Abbruch
begin
if Temp = IDYES then Speichernunter1Click(Form1); //Speichern
try
Log('Starting Download '+Ping.Host);
SynMemo.Clear;
SynMemo.Text:=IdHTTP.Get('http://'+Ping.Host); //Runterladen
Form1.Caption:=Titel + ' - ' + Ping.Host; //Titel
Log('Download from '+Ping.Host+' ready');
except //Fehler
ShowMessage('Fehler beim Download'); //Fehler
Log('Download Error');
end;
end;
end;