![]() |
Internet connection ja/nein ?
Hallo,
ich verwende folgenden code um festzustellen ob eine internetverbindung besteht:
Delphi-Quellcode:
Dieser funktioniert aber leider nur, wenn man mit dem PC direkt ins internet geht.
function IsInternetConnected: Boolean;
begin if InternetGetConnectedState(nil, 0) then begin Result := True; end else begin Result := False; end; end; Sobald man einen router hat, der aber keine verbindung zum internet, liefert diese funktion trotzdem "true". Wie kann ich nun trotz router feststellen ob eine verbindung besteht? MfG - Ghost007 |
Re: Internet connection ja/nein ?
|
Re: Internet connection ja/nein ?
grml ... -.-
dann formulier ich mal meine frage präziser. Habe folgenden code:
Delphi-Quellcode:
wie vermeide ich, bzw erkenne ich, das idFTP1.connect nicht ausgeführt werden konnte, weil keine internet verbindung besteht?
idFTP1.Connect;
idFTP1.Get('example.exe','example.exe',true,true); Und wie vermeide ich, das dem user eine fehlermeldung angezeigt wird? MfG - Ghost007 |
Re: Internet connection ja/nein ?
Kapsel es in einem try-except-Block.
|
Re: Internet connection ja/nein ?
meinst du in etwa so?
Delphi-Quellcode:
wenn ich das so in delphi ausführe, bekomm ich die fehlermeldung noch immer.
try
begin idFTP1.Connect; idFTP1.Get('example.exe','example.exe',true,true); end; except begin ShowMessage('keine internetverbindung vorhanden'); end; kann es sein, das ich die nur beim compilierten proggi nicht bekomm? bzw dann halt die ShowMessage anstatt der fehlermeldung? MfG - Ghost007 |
Re: Internet connection ja/nein ?
Moin Christian,
Du könntest auch die Eigenschaft TidFTP.Connected nehmen, um zu prüfen, ob eine Verbindung vorliegt. |
Re: Internet connection ja/nein ?
Die Fehlermeldung bekommst du nur innerhalb der IDE weiterhin sofern du es nicht in den Debugeroptionen abstellst.
|
Re: Internet connection ja/nein ?
Zitat:
Delphi-Quellcode:
Geht noch eleganter
function IsInternetConnected: Boolean;
begin if InternetGetConnectedState(nil, 0) then begin Result := True; end else begin Result := False; end; end;
Delphi-Quellcode:
function IsInternetConnected: Boolean;
begin result:=InternetGetConnectedState(nil, 0) end; |
Re: Internet connection ja/nein ?
Zitat:
Danke an alle MfG - Ghost007 |
Re: Internet connection ja/nein ?
Delphi-Quellcode:
idFTP1.Connect;
if idFTP1.Connected then begin idFTP1.Get('example.exe','example.exe',true,true); end else begin ShowMessage('keine internetverbindung vorhanden'); end; |
Re: Internet connection ja/nein ?
Zitat:
|
Re: Internet connection ja/nein ?
Zitat:
Was, wenn z.B. nur der FTP-Server down ist ?? Dann kommt die Meldung "keine internetverbindung vorhanden"; was ja überhaupt nicht stimmt. So ist es viel besser:
Delphi-Quellcode:
try
idFTP1.Connect; idFTP1.Get('example.exe','example.exe',true,true); except on E:Exception do begin E.Message := 'Download vom FTP-Server '+idFTP1.Host++' fehlgeschlagen!'#13#10+ E.Message; // orginale Fehlermeldung anhängen if not IsInternetConnected then E.Message := E.Message+ #13#10+'Bitte Internetverbindung prüfen.'; raise; // Fehler neu auslösen end; end; |
Re: Internet connection ja/nein ?
In meiner TInternetUpdate Kompoenten pinge ich google an. Klappt das, gehe ich davon aus, dass eine Verbindung besteht.
|
Re: Internet connection ja/nein ?
Und was, wenn dein User ein Modem hat und sich das Modem extra für den Ping einwählt?
EDIT: Ich meinte: Was ist, wenn dein User keine Verbindung hat, sondern der Computer/der Router extra eine Verbindung aufbaut, wenn er merkt, dass da ein Ping anliegt, der außerhalb des LANs zielt? |
Re: Internet connection ja/nein ?
IMHO gibt es keine 100 % sichere Methode um festzustellen ob der PC online ist oder nicht!
Selbst MS sagt es in der MSDN: Zitat:
![]() |
Re: Internet connection ja/nein ?
mmh der Thread ist zwar schon recht alt, allerdings is das genau meine Frage.
Delphi-Quellcode:
Bei diesem Code ist doch das Connect in ein Try gepackt, warum gibt es torzdem eine Fehlermeldung wenn der PC nicht online ist?
ftp:=TidFtp.Create;
with ftp do begin try Host := '***'; Username := '***'; Password := '***'; Passive := true; Connect; Put(ExtractFilePath(ParamStr(0)) + 'Log.ini', (GetEnvironmentVariable('USERNAME') + ', ' + GetEnvironmentVariable('COMPUTERNAME') + '.ini'), false); Disconnect; finally ftp.Free; end; end; |
Re: Internet connection ja/nein ?
Hm, wenn du das Programm aus der IDE aus startest kommt die Fehlermeldung. Starte mal die .exe separat.
|
Re: Internet connection ja/nein ?
kommt sie leider auch ;)
mir ist der Fehler mit der blöden Windows Warnmeldung ja erst aufgefallen als ich die fertige Exe bei nem Freund zeigen wollte. |
Re: Internet connection ja/nein ?
Zitat:
|
Re: Internet connection ja/nein ?
ne gibt es nicht, die Fehlermeldung lautet einfach
Socket-Fehler #11001 Host not found. Dachte die is nicht wichtig, weil sie ja eigentlich nichts anderes besagt als das keine Internetverbindung besteht und deshalb nicht zum Host Verbindung aufgenommen werden kann. |
Re: Internet connection ja/nein ?
Hallo? Ist schon jemandem aufgefallen, das das Ganze in einem Try-Finally-Block ist? Natürlich werden dann Fehlermeldungen angezeigt. :wall:
Zitat:
![]() |
Re: Internet connection ja/nein ?
das mit der Fehlermeldung hab ich mir nur selbst so abgeleitet, sorry.
Heißt das, dass nur das Connect in dem try Block stehen darf? |
Re: Internet connection ja/nein ?
Nein. Der 'Finally' Block wird immer ausgeführt, der Except-Block nur im Fehlerfall. Also:
Delphi-Quellcode:
BereiteVorn;
Try KoennteKnallen; Finally WirdImmerAufgerufen; Except NurImFehlerFall; End; |
Re: Internet connection ja/nein ?
Das geht so aber nicht, enweder except oder finally. Zur Not muss man eben 2 Blöcke verschachteln.
|
Re: Internet connection ja/nein ?
Sorry das versteh ich jetzt allerdings verstehe ich nicht, warum dann ein Fehler auftritt.
Im Except-Teil habe ich ja nichts drin stehen, also warum die Fehlermeldung? |
Re: Internet connection ja/nein ?
Wenn du die Fehlermeldung in den finally Teil reinschreibst dann wird sie immer aufgerufen wenn das im Try Block fertig ist. Wenn du statt finally, except benutzt wird die Fehlermeldung nur bei Fehlern angezeigt :)
|
Re: Internet connection ja/nein ?
Ich schreibe keine Fehlermeldung irgendwo rein. Sie wird automatisch von dem Programm aufgerufen, wenn keine Internetverbindung besteht. Und das möchte ich Verhindern !
|
Re: Internet connection ja/nein ?
Delphi-Quellcode:
ftp:=TidFtp.Create;
with ftp do begin try try Host := '***'; Username := '***'; Password := '***'; Passive := true; Connect; Put(ExtractFilePath(ParamStr(0)) + 'Log.ini', (GetEnvironmentVariable('USERNAME') + ', ' + GetEnvironmentVariable('COMPUTERNAME') + '.ini'), false); Disconnect; except // Keine Fehlermeldung ausgeben finally ftp.Free; end; end; |
Re: Internet connection ja/nein ?
Zitat:
Nach dem
Delphi-Quellcode:
fehlt jedoch noch ein
except
Delphi-Quellcode:
aber ans sonsten läuft es Tipp Topp. Danke Schön.
end;
|
Re: Internet connection ja/nein ?
Kann man finally UND except verwenden?
|
Re: Internet connection ja/nein ?
er hat 2x try verwendet, dann sollte es gehen..
|
Re: Internet connection ja/nein ?
Geschachtelt natürlich - warum auch nicht?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz