AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi probleme mit exceptions und idhttp
Thema durchsuchen
Ansicht
Themen-Optionen

probleme mit exceptions und idhttp

Ein Thema von Melatonin · begonnen am 15. Jul 2008 · letzter Beitrag vom 15. Jul 2008
Antwort Antwort
Melatonin

Registriert seit: 15. Jul 2008
2 Beiträge
 
#1

probleme mit exceptions und idhttp

  Alt 15. Jul 2008, 16:18
Hi!

ich komme leider bei folgendem problem nicht weiter:

in meinem programm soll durch einen timer jede sekunde eine Seite heruntergeladen werden und soll praktisch damit prüfen, ob eine Internetverbindung besteht (quasi als Ping, ich fürchte ne ziemlich unkonventionelle Lösung, aber für mich sollte es reichen).

Folgender Quellcode sollte relevant sein (einmal meine download-funktion zum einen, die timer-funktion zum anderen)

Delphi-Quellcode:
function download(URL,Datei:string):boolean;
var FS:Tfilestream;
begin
Application.ProcessMessages;
FS:=Tfilestream.Create(Datei,fmCreate);
try
  form1.IdHTTP1.Get(URL,FS);
  Result := true;
except
  Result := false;
end;
  FS.Free;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  If download('http://www.xxx.de/ping.txt','c:/ping.txt')=true then
    label1.caption := 'online
  else
   label1.caption := 'offline;
end;

Soweit funktioniert eigentlich alles so, wie ich es will. Allerdings, wenn ich die Verbindung kapsel, wird zwar erst richtigerweise offline angezeigt. wenn ich danach wieder online gehe, kommt aber kein statuswechsel mehr.

Da im Try-Teil Exceptions bzw. fehlermeldungen aufgetreten sind, habe ich unter "Tools/Debugger-Options" die funktion "stop on delphi exceptions" deaktiviert. dann waren die fehlermeldungen weg, aber ich vermute hierin liegt irgendwo der grund dafür, dass er nicht mehr von offline auf online wechselt.

Hat jemand eine Idee? Wäre sehr dankbar für jeden Rat!

Beste Grüße,
Malte
  Mit Zitat antworten Zitat
Benutzerbild von pilic
pilic

Registriert seit: 10. Aug 2006
Ort: Aschbach
131 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: probleme mit exceptions und idhttp

  Alt 15. Jul 2008, 16:33
Also das erste, was mir auffällt, ist, dass du lokal keinen Backslash verwendest. Es sollte heißen download('...','C:\ping.txt')
  Mit Zitat antworten Zitat
Melatonin

Registriert seit: 15. Jul 2008
2 Beiträge
 
#3

Re: probleme mit exceptions und idhttp

  Alt 15. Jul 2008, 16:41
danke dir,

habs mal geändert, aber daran liegt es nicht. weiterhin ist mir aufgefallen, dass definitiv die zeile "IdHTTP1.Get(URL,FS)"-Funktion nicht mehr tut. Die Datei (ping.txt) wird weiterhin erstellt, wenn der Status von Online auf Offline gegangen ist.

Beste Grüße
Malte
  Mit Zitat antworten Zitat
Tommy82

Registriert seit: 12. Dez 2005
61 Beiträge
 
Delphi 2007 Professional
 
#4

Re: probleme mit exceptions und idhttp

  Alt 15. Jul 2008, 17:01
Hallo,

was spricht gegen die Art wie es im Code Library steht?

http://www.delphipraxis.net/internal...ect.php?t=6540

Desweiteren könntest Du Dir auch einfach eine Variable erstellen, wo Du den Quelltext einließt. Wenn diese Variable leer bleibt, biste offline .

mfg

Tommy82
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: probleme mit exceptions und idhttp

  Alt 15. Jul 2008, 18:09
Zitat von Melatonin:
soll praktisch damit prüfen, ob eine Internetverbindung besteht
Und was machst du, wenn der Router so eingestellt ist, dass er sich automatisch verbindet? Man kann nicht eindeutig ermitteln, ob eine Internetverbindung besteht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: probleme mit exceptions und idhttp

  Alt 15. Jul 2008, 19:19
Herzlich willkommen in der Delphi-PRAXiS, Malte.

Vielleicht möchtest du ja nur prüfen, ob ein bestimmter WebServer antwortet. Ich habe deinen Code ein wenig umgeschrieben:

Delphi-Quellcode:
const
  SERVER_STATUS: array [Boolean] of string = ('offline', 'online');
  SERVER_NAME = 'www.delphipraxis.net';

function HttpServerActive(const serverName: string;
    const proxyName: string = ''): Boolean;
begin
  with TIdHTTP.Create(nil) do
  try
    Host := serverName;
    ProxyParams.ProxyServer := proxyName;
    ProxyParams.ProxyPort := Port;
    try
      Head('/');
      Result := True;
    except
      Result := False;
    end;
  finally
    Free;
  end;
end;

procedure TDemoForm.ClockTimer(Sender: TObject);
begin
  with Sender as TTimer do
  begin
    Enabled := False;
    try
      StatusLabel.Caption := SERVER_STATUS[HttpServerActive(SERVER_NAME)];
    finally
      Enabled := True;
    end;
  end;
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz