Hallo zusammen,
ich habe da ein Problem.
Also, ich möchte eine möglichst genaues Ping Resultat, deshalb möchte ich folgendes machen:
Ich möchte 6mal den Ping im Hintergrund aufrufen und dann alle erhaltenen Werte zusammenzählen.
Dann zähle ich den ersten Wert von der Summe ab, weil die erste Zahl sehr hoch ist und deshalb ein
ungenaues Resultat ausgibt.
Dann teile ich die erhaltene Zahl durch 5, somit müsste ich eigendlich auf den Durchschnitt kommen.
Nun bekomme ich aber eine Unrealistische Zahl heraus. Also minus Werte und das darf nicht sein.
Ich finde den Fehler einfach nicht. Wäre froh, wenn jemand meinen Code durchsehen könnte und mir sagen
könnte, was ich falsch mache.
Danke schonmal.
Gruss
Sabi
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure TfrmPing.btnStartClick(Sender: TObject); var zahl: Integer; ergebnis: Double; firsttime: Integer; i: Integer; begin edtMemo.Lines.Add('Ping:'); angaben();
zahl:=0; firsttime:=IdIcmpClient1.ReplyStatus.MsRoundTriptime; for i:=0 to 5 do begin angaben(); zahl:=zahl+IdIcmpClient1.ReplyStatus.MsRoundTriptime; end;
ergebnis:=zahl-firsttime; ShowMessage(FloatToStr(ergebnis/5));
if IdIcmpClient1.ReplyStatus.MsRoundTriptime > IdIcmpClient1.ReceiveTimeout then edtMemo.Lines.Add('Zeitüberschreitung! Es konnte keine Verbindung hergestellt werden.') else edtMemo.Lines.Add(Format('Zeit: %d ms', [IdIcmpClient1.ReplyStatus.MsRoundTriptime])); end;
procedure TfrmPing.angaben(); begin IdIcmpClient1.Host:='192.168.3.8'; IdIcmpClient1.Ping(); end; |
noch zur Info, ich gebe meine Berechnung wie ihr seht mal nur in einer MessageBox aus.
Dies habe ich mal so gemacht, damit ich erst wenn ich sicher bin das Resultat in mein Memo
hineingeschrieben wird. Momentan wird ja einfach nur der aktuelle Wert des Ping in das Memo
geschrieben. Also euch nicht wundern.
Danke.
Moderiert von
Narses: Delphi-Tags hinzugefügt