Synapse - TraceRouteHost abbrechen

Rund um die LCL und andere Komponenten
Antworten
catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Synapse - TraceRouteHost abbrechen

Beitrag von catweasel »

Moin

Ich setze hier die Funktion "TraceRouteHost" von Synapse4.0 ein.

Problematisch ist wenn der Host nicht erreichbar ist, dann kann es locker >2 Minuten dauern bis das
Programm weiter abgearbeitet wird.
Was kann ich tun damit das Programm abgebrochen werden kann, zB. durch durücken auf das biSystemIcon (Kreuz-Button der Form)

Gruß
Michael

Ausschnitt aus dem Programm:

Code: Alles auswählen

      //Traceroute only
      if ssShift in Shift then begin
          PingForm.Show;
          PingForm.Caption:='Traceroute';
          PingForm.Memo1.Clear;
          PingForm.Memo1.Lines.Add('Routenverfolgung zu '+ip+chr(13));
 
          { TODO : Dauert sehr lange wenn Timeout (versucht 30 Hops) }
          zwischenergebnis:=TraceRouteHost(ip);     //  <<<<<<<<<<<<<<<<<<<<<<<<<<
 
          while pos(' ',zwischenergebnis) <> 0 do begin
              trace_ip:=AnsiLeftStr(zwischenergebnis,pos(' ',zwischenergebnis)-1);
              delete(zwischenergebnis,1,pos(' ',zwischenergebnis));
              trace_ms:=AnsiLeftStr(zwischenergebnis,pos(chr(13),zwischenergebnis)-1);
              delete(zwischenergebnis,1,pos(chr(13),zwischenergebnis));
              PingForm.Memo1.Lines.Add(trace_ip+'  '+trace_ms+chr(13)+' ms');
          end;
 
          PingForm.Memo1.Lines.Add('fertig.');
          exit;
        end;

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Synapse - TraceRouteHost abbrechen

Beitrag von m.fuchs »

catweasel hat geschrieben:Ich setze hier die Funktion "TraceRouteHost" von Synapse4.0 ein.
Release 40 nehme ich mal an. Ist aber auch unerheblich.
catweasel hat geschrieben:Problematisch ist wenn der Host nicht erreichbar ist, dann kann es locker >2 Minuten dauern bis das
Programm weiter abgearbeitet wird.
Was kann ich tun damit das Programm abgebrochen werden kann, zB. durch durücken auf das biSystemIcon (Kreuz-Button der Form)
Da bleibt die nur übrig, den Teil in einen Thread auszulagern. Dann kann dein Programm auch während des TraceRouteHost-Aufrufs weiterhin auf die Botschaften von Windows reagieren.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Synapse - TraceRouteHost abbrechen

Beitrag von catweasel »

m.fuchs hat geschrieben:Da bleibt die nur übrig, den Teil in einen Thread auszulagern. Dann kann dein Programm auch während des TraceRouteHost-Aufrufs weiterhin auf die Botschaften von Windows reagieren.
Danke für den Hinweis. Ich muß mal schauen wie man so etwas macht.

Gruß
Michael

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Synapse - TraceRouteHost abbrechen

Beitrag von catweasel »

m.fuchs hat geschrieben:Da bleibt die nur übrig, den Teil in einen Thread auszulagern.
So richtig habe ich es noch nicht hinbekommen.

Muß ich an meinem Programm nur die Zeile

Code: Alles auswählen

zwischenergebnis:=TraceRouteHost(ip);
in den Threat auslagern, oder den ganzen Block zwischen

Code: Alles auswählen

if ssShift in Shift then begin
[...]
end;
Gruß
Michael

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Synapse - TraceRouteHost abbrechen

Beitrag von theo »

In Multithreading muss man sich ein bisschen einarbeiten, das kapieren die Meisten nicht einfach so vor dem Frühstück.
http://wiki.freepascal.org/Multithreade ... utorial/de
http://www.delphi-treff.de/tutorials/ob ... l/threads/

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Synapse - TraceRouteHost abbrechen

Beitrag von catweasel »

theo hat geschrieben:In Multithreading muss man sich ein bisschen einarbeiten, das kapieren die Meisten nicht einfach so vor dem Frühstück.
http://wiki.freepascal.org/Multithreade ... utorial/de
http://www.delphi-treff.de/tutorials/ob ... l/threads/
Danke für die Links. Ich werde das Problem dann erst einmal zurückstellen und mir die Infos ansehen.

Gruß
Michael

Antworten