Hi und willkommen in der Delphi-Praxis
Nun zu deiner Frage:
Du solltest aus Performancegründen lieber einen TTimer nehmen und keine Schleife. Dein Programm muss annehmen, dass der Ausganszustand "offline" ist. Im OnTimer Ereignis des Timers kannst du dann überprüfen lassen, ob der Computer gerade online ist oder nicht. Mich würde allerdings interessieren, wie du das genau machen willst, denn es gibt
imho keine Möglichkeit mit Sicherheit festzustellen, ob ein Computer nun gerade online ist oder nicht. Wie dem auch sei... jedenfalls musst du den momentan ermittelten Status auch noch mit dem zuletzt ermittelten Status vergleichen. Speichere dazu am Ende jedes OnTimer Ereignises einfach den Status in einer Variablen, z.B. "LastOnlineState: Boolean". Dadurch erreichst du, dass das Ereignis nur bei einem Wechsel des Onlinestatus ausgelöst wird.
Das könnte z.B. so aussehen (Wenn du die
VCL benutzt):
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 =
class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
LastOnlineState: Boolean;
function ComputerIsOnline: Boolean;
procedure OnGoOnline;
procedure OnGoOffline;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.OnGoOnline;
begin
//Computer ging gerade online...
end;
procedure TForm1.OnGoOffline;
begin
//Computer ging gerade offline...
end;
function TForm1.ComputerIsOnline: Booelan;
begin
//Hier herausfinden, ob der Computer online ist..nur wie?
Result := ...;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
LastState := false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var CurrentOnlineState: Boolean;
begin
CurrentOnlineState := ComputerIsOnline;
If CurrentOnlineState<>LastOnlineState
then
case CurrentOnlineState
of
true: OnGoOnline;
false: OnGoOffline;
end;
LastOnlineState := CurrentOnlineState;
end;
end.
Gruß,
Dani
Dani H.