dbExpress - sprawdzanie połączenia z internetem

0

Witam,
mam następujący problem. Chcę sprawdzić czy użytkownik ma połączenie z internetem. W chwili obecnej jak nacisnę połącz, co zmienia w TSQLConnection właściwość Connected na true, to w momencie gdy wyłączę internet to pokazuje mi dbExpress error: Invalid Username and Password. Mimo tego kodu wyświetla mi błąd zamiast komunikatu:

(...kod...)
   MySQL.Connected := True;       // Połączenie z Bazą Danych
   if MySQL.ConnectionState = csStateOpen then
   begin
    (...kod...)
   end else
   begin
    Label1.Caption := 'Nie masz połączenia z internetem!';
   end;

Jak przejść ten problem?

0

Jeżeli chodzi ci o zwykłe sprawdzenie połączenia z netem, to masz akurat przykładowy kod (co prawda do tworzenia własnego komponentu, lecz jest on do sprawdzania połączenia z internetem :D)
http://4programmers.net/Delphi/Artykuły/Własne_komponenty
Albo (wg. mnie) ta funkcja ci pomoże:

InternetGetConnectedState(@Flags, 0);

Ale polecam przestudiowanie kodu pod podanym przeze mnie linkiem.

0

Właśnie nie. To jest mój kod i zamiast robić w ten sposób że wyświetla komunikat Nie masz połączenia z internetem! to w momencie gdy wykonuje połączenie

MySQL.Connected := True;

znajduje błąd: dbExpress error: Invalid Username and Password. Zaraz sprawdzę działanie funkcji. Znalazłem tutaj zastosowanie jej:
http://4programmers.net/Forum/viewtopic.php?id=54735
a tu opis parametrów:
http://www.answers.com/topic/internetgetconnectedstate</b>

//edit: Sprawdziłem i działa, dzięki.

a oto odpowiedź co zrobić:

procedure TForm1.FormCreate(Sender: TObject);
var Flags : DWORD;
begin
  Flags := INTERNET_CONNECTION_LAN or INTERNET_CONNECTION_MODEM or
           INTERNET_CONNECTION_PROXY or INTERNET_CONNECTION_MODEM_BUSY;
  if InternetGetConnectedState(@Flags, 0) then  // sprawdz polaczenie.
  Label1.Caption := 'Połączony' else Label1.Caption := 'Rozłączony';
end;
0

A jesteście pewni że ten kod zadziała jak ktoś ma ruter jak ja [nie chcę go teraz odłączyć, ale podobny
kod już kiedyś widziałem i nie działął do końca prawidłowo] i jak jest połączenie z ruterem ale ruter już
nie ma z siecią, bo na przykład internet padł to taki kod i tak zwróci informację że połączony. Lepiej w
takiej sytuacji - według mnie - wysłać ping (ja użyłem komponentu DPing, dostępny po wygoolowaniu)
do servera po IP lub po adresie. Może to być server z bazą w sieci o ile ma wysoki uptime i odpowiada
na pingi, a może to być na przykłąd google.com albo wp.pl. Ja tak to bym rozwiązał, sprawdzjąc pingi.

0

Mi działa. Mam router, a program testuje na laptopie, czyli łączę się przez wireless. Podaj swój kod oraz gdzie znaleźć komponent.

0

Link do komponent DPing jest dostępny w komentarzach do artykułu:
Dwa w jednym czyli jak napisać komponent i wysłać pinga

1 użytkowników online, w tym zalogowanych: 0, gości: 1