Thema: Delphi Frage zu ping

Einzelnen Beitrag anzeigen

runger
(Gast)

n/a Beiträge
 
#1

Frage zu ping

  Alt 15. Jul 2005, 07:48
Hallo,
ich habe ein kleines Verständnisproblem, vielleicht kann mir jemand helfen.
Ich versuche einen ping über TIdIcmpClient abzusetzen, funktioniert auch.
In der Komponenete gibts auch einen Timeout für die ping funktion. Das Problem ist wie nutze ich den. Mit einem externen Timer hab ichs, untenstehendes Beispiel, schon versucht. Den Timer kann ich in der reply Methode nicht mehr deaktivieren (warum ist mir unklar). ti ist ein Timer der auf 1000 msec steht und gestartet wird, wenn button1 gedrückt wird. Eigentlich soll der gestoppt werden, sobald eine Antwort, also der reply event, auftritt. Das funktioniert aber nicht.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdIcmpClient, ExtCtrls, IdRawBase, IdRawClient;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    ti: TTimer;
    cl1: TIdIcmpClient;
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure tiTimer(Sender: TObject);
    procedure cl1Reply(ASender: TComponent;
      const AReplyStatus: TReplyStatus);
  private
    { Private-Deklarationen }
    FReply: TOnReplyEvent;
  public
    { Public-Deklarationen }
  protected
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormShow(Sender: TObject);
begin
  ti.Enabled:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   cl1.Ping('ELW600');
   ti.Enabled:=true;
end;

procedure TForm1.tiTimer(Sender: TObject);
begin
   label1.Caption:='error';
end;

procedure TForm1.cl1Reply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);
begin
  ti.Enabled:=false;
  label1.Caption:=aReplyStatus.FromIpAddress;
end;

end.
Was mach ich falsch?

Rainer
  Mit Zitat antworten Zitat