![]() |
VirtualStringTree und TTimer/JvThread/IdIcmpClient
Liste der Anhänge anzeigen (Anzahl: 1)
Hey Leute hab mal wieder ein Problem =((
ich hab eine VirtualStringTree und dort werden ca. 50 Computer aufeinmal angezeigt jeder der Computer wird mit einem eigenem Thread überprüft ob er erreich bar ist mit der IdIcmpClient doch mein Problem ist wenn ich das netz wechsle sollen ja neue Computer geladen werden das klappt ja gut nur der speicher wird zugemüllt der er immer neue timer thread und idicmpclients erstellt wenn ich vor dem wechsel nun löschen will... klappt es manchmal aber manchmal bricht er ab =/ also debuggerfehler... ich denke mal ich stoppe und lösche die comps falsch könnt ihr mir helfen =))
Delphi-Quellcode:
type
PEntry = ^TEntry; TEntry = record Name: String; IPAdresse: String; PCName: String; Passwort: String; Timer:TTimer; Thread:TJvThread; PingC:TIdIcmpClient; Online:Integer; end;
Delphi-Quellcode:
var
T,T2:PVirtualNode; Data: PEntry; begin T := Stree.GetFirst; if T <> Nil then begin T2 := STree.GetFirstChild(T); if T2 <> Nil then begin while assigneD(T2) do begin Data := STree.GetNodeData(T2); if Data.Thread <> Nil then begin Data.Thread.Terminate; end; if Data.Timer <> Nil then begin Data.Timer.Enabled := False; Data.Timer.Destroy; end; if Data.PingC <> nil then begin Data.PingC.Free; end; T2 := T2.NextSibling; end; end; end; |
Re: VirtualStringTree und TTimer/JvThread/IdIcmpClient
stell doch einfach um auf objekt orientierte programmierung?
Delphi-Quellcode:
im form create
type
TEntry = class public Name, IPAdresse, PCName, Passwort: String; Online:Integer; Timer:TTimer; Thread:TJvThread; PingC:TIdIcmpClient; constructor Create(); destructor Destroy(); end; constructor TEntry.Create(); begin // hier die anderne objs erzeugen end; destructor TEntry.Destroy(); begin // hier die obj zerstören end;
Delphi-Quellcode:
objekte in den vst:
vst.nodedatasize:=sizeof(tentry);
Delphi-Quellcode:
im vst on free:
var
obj: TEntry; begin obj:=TEntry.create; vst.addobject(nil, vst); end;
Delphi-Quellcode:
im gettext vom vst:
var
obj: tentry; begin obj:=tentry(vst.getnodedata(node)^); obj.free; end;
Delphi-Quellcode:
das ist jetzt erstmal die vst optik gewesen.
var
obj: tentry; begin obj:=tentry(vst.getnodedata(node)^); case column of 0: celltext:=obj.name; // hier die andern spalten end; end; programmtechnisch würde ich wohl einen timer verwenden für das ganze projekt und ein ping objekt. diese beiden würden dann die liste durch eine iteration aktuell halten. (sicherstellen das der timer nicht 2 mal gleichzeitig ausgelöst wird) oder den timer weg und einen thread (ist aber komplizierter) ich denke du musst keine echtzeit anzeige haben, eine verzögerung von 5-10 sekunden sollte kein problem darstellen oder? |
Re: VirtualStringTree und TTimer/JvThread/IdIcmpClient
Delphi-Quellcode:
geht bei mir garnet =((((
vst.addobject(nil, vst);
addobject bestizt meine komp garnet o.O bitte um andere Vorschläge =)) |
Re: VirtualStringTree und TTimer/JvThread/IdIcmpClient
oh sorry das heist
Delphi-Quellcode:
vst.addchild(nil, obj);
|
Re: VirtualStringTree und TTimer/JvThread/IdIcmpClient
Zitat:
Code:
[edit]
var
obj: TEntry; begin obj:=TEntry.create; vst.addchild(nil, [color=#ff0000][b]obj[/b][/color]); end; addobject > addchild ^^ |
Re: VirtualStringTree und TTimer/JvThread/IdIcmpClient
jup wie ich in #4 geschrieben habe.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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 by Thomas Breitkreuz