Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage zu ping (https://www.delphipraxis.net/49726-frage-zu-ping.html)

runger 15. Jul 2005 06:48


Frage zu ping
 
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

chrisw 15. Jul 2005 08:20

Re: Frage zu ping
 
Warum, kann ich auch nicht nachvollziehen !

Umgehen kannst Du das Problem mit
Delphi-Quellcode:
ti.Interval := 0
anstelle von
Delphi-Quellcode:
ti.enabled := False
Dann funktioniert das .

Chris

runger 15. Jul 2005 08:23

Re: Frage zu ping
 
Es funktioniert.

Danke

Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 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