Autor Beitrag
DerHorst
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

windows200
delphi 6 PE
BeitragVerfasst: Mo 03.09.07 17:45 
Ich möchte überprüfen, ob einen Website verfügbar ist.

Mache ist mit
ausblenden Delphi-Quelltext
1:
Temp := IdHTTP1.Get('http://'+dyndnshost);					

Leider dauert erst immer viele Sekunden, bis er merkt, dass sie Seite nicht verfügbar ist.
Möchte gerne z.B. ein Zeitlimit von 2000 ms setzen.

Ich habe daher IdHTTP1.ConnectTimeout gefunden.

Klappt soweit auch. Nur das Problem ist, dass denn ein Popup kommt und folgende Instruktionen nicht weiter ausgeführt werden.
Ich kann man so etwas lösen?

DANKE

Hosrt

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt

_________________
VIELEN DANK!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mo 03.09.07 18:48 
Setz einfach den Get-Befehl in einen try..except-Block. Allerdings kommt, wenn du dein Programm in der IDE ausführst, immer eine Warnmeldung, erst wenn du die EXE ohne Debugger ausführst, kommt keine Meldung mehr (Man kann auch in den Optionen den Debugger temporär abschalten).
Übrigens (ich nehme mal an, dass du den Rückgabewert Temp nicht benötigst) kannst du jede Funktion auch als Prozedur aufrufen, schreib einfach:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
try
  IdHTTP1.Get('http://'+dyndnshost);
  ShowMessage('URL geht');
except
  ShowMessage('URL geht ned');
end;
DerHorst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

windows200
delphi 6 PE
BeitragVerfasst: Mo 03.09.07 19:10 
Nur so mit try und except dauert es ja zu lange...

Die Meldung wird ja durch IdHTTP1.ConnectTimeout ausgelöst...

_________________
VIELEN DANK!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mo 03.09.07 19:14 
Ja dann umschließ halt den ConnectTimeout mit dem try..except-Block, oder zeig mal deinen relevanten Code.
DerHorst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

windows200
delphi 6 PE
BeitragVerfasst: Mo 03.09.07 21:09 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
try
 IdHTTP1.ConnectTimeout:= 1000;
 IdHTTP1.Get('http://test.dyndns.org');
except
end;



mit IdHTTP1.ConnectTimeout:= 1000; im code kommt immer das Popup!

Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt

_________________
VIELEN DANK!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mo 03.09.07 21:17 
user profile iconDerHorst hat folgendes geschrieben:
Die Meldung wird ja durch IdHTTP1.ConnectTimeout ausgelöst...

Nö, die Meldung wird durch TIdHTTP.Get ausgelöst.

user profile iconDerHorst hat folgendes geschrieben:
mit IdHTTP1.ConnectTimeout:= 1000; im code kommt immer das Popup!

Lies mal das was ich geschrieben hab gründlich durch.
user profile iconChryzler hat folgendes geschrieben:
Allerdings kommt, wenn du dein Programm in der IDE ausführst, immer eine Warnmeldung, erst wenn du die EXE ohne Debugger ausführst, kommt keine Meldung mehr (Man kann auch in den Optionen den Debugger temporär abschalten).
DerHorst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

windows200
delphi 6 PE
BeitragVerfasst: Di 04.09.07 15:34 
Ich habs schon richtig gelsen;)
Es kommt das Popupfesnter mit dem Text "403 Frobidden"
Ist ist also nicht die Fehlermeldung, die etwas mit dem Debugger zu tun hat.
Und diese kommt halt nur, wenn IdHTTP1.ConnectTimeout:= 1000; definiert ist.

_________________
VIELEN DANK!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Di 04.09.07 23:31 
Das hat aber nix mit dem Code zu tun, sondern mit deiner Webseite, die du prüfen willst.
Folgender Code geht bei mir ohne jeden Fehler, probier ihn mal aus. ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
try 
  IdHTTP1.ConnectTimeout := 1000;
  IdHTTP1.Get('http://www.delphi-forum.de/');
  ShowMessage('DF ist online');
except
  ShowMessage('DF ist offline');
end;
DerHorst Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 31

windows200
delphi 6 PE
BeitragVerfasst: Mi 05.09.07 12:31 
Vielen Dank für den Code, klappt auch.
Mit dem Forbidden liegt an der Seite, hast du recht!
Aber weißt du wie man die Popupmeldung unterdrückt, damit er weiter geht im Programm?


Viele Grüße

Horst

_________________
VIELEN DANK!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mi 05.09.07 14:40 
user profile iconDerHorst hat folgendes geschrieben:
Aber weißt du wie man die Popupmeldung unterdrückt, damit er weiter geht im Programm?

Ist das soo schwer zu verstehen? :shock:
user profile iconChryzler hat folgendes geschrieben:
Lies mal das was ich geschrieben hab gründlich durch.
user profile iconChryzler hat folgendes geschrieben:
Allerdings kommt, wenn du dein Programm in der IDE ausführst, immer eine Warnmeldung, erst wenn du die EXE ohne Debugger ausführst, kommt keine Meldung mehr (Man kann auch in den Optionen den Debugger temporär abschalten).