Autor Beitrag
Erichgue
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 86

Win XP/2000/7
TurboPacal 7.0; Delphi 2/5/7; BDS 2006/2010/XE6; C#; MSSQl 2000
BeitragVerfasst: Fr 30.03.12 15:41 
Hallo,
ich habe mir eine Klasse von TVirtualStringTree abgeleitet und kann im zur Entwurfzeit Knoten (Nodes) hinzufügen.
Aber sobald der Tree zur Entwurfszeit Knoten hat spielt meine IDE verückt.
Da kommen beim neukompilieren des Packages, oder mal einfach so,
nach dem das Formular mit der Komponente geschlossen wurde Zugriffsverletzungen und Fehlermeldungen.

Irgendwie scheint es nach dem Zerstören der Komponente mit dem Speichermanager zusammen zu hängen.
(borlndmm.SysFreeMem)

Hat hier jemand Erfahrung damit?

Oder wie geht man vor, wenn man dem VirtualTree Nodes zur Entwurfszeit einfügen will?

Edit: Zur Laufzeit gibt es keine Probleme

Gruß

Erich
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Fr 30.03.12 16:40 
Hi,

user profile iconErichgue hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
ich habe mir eine Klasse von TVirtualStringTree abgeleitet und kann im zur Entwurfzeit Knoten (Nodes) hinzufügen.
Aber sobald der Tree zur Entwurfszeit Knoten hat spielt meine IDE verückt.
Da kommen beim neukompilieren des Packages, oder mal einfach so,
nach dem das Formular mit der Komponente geschlossen wurde Zugriffsverletzungen und Fehlermeldungen.

Irgendwie scheint es nach dem Zerstören der Komponente mit dem Speichermanager zusammen zu hängen.
(borlndmm.SysFreeMem)

Hat hier jemand Erfahrung damit?


Mit von TVirtualStringTree abgeleiteten Komponenten nicht, aber generell mit Komponentenentwicklung: Ich trage dann immer die IDE unter Run/Parameters als Host-Application ein und debugge. Vielleicht hilft Dir das ja schon?

twm
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 31.03.12 00:33 
Irgendwo musst du ja die Knoten speichern. Ich vermute, dass du dabei irgendwo noch auf schon freigegebene Speicherbereiche zugreifst.

Da bleibt im Grunde nur ganz genau zu schauen wann was freigegebein wird. Am besten vielleicht in einem Test mit wenigen Knoten oder so. Und natürlich mit entsprechendem Logging.

Das kommt halt davon, wenn man unbedingt mit Gewalt Datenhaltung und GUI vermischen muss... Selbst mit einer Komponente, die die Trennung so einfach macht... :autsch:
Erichgue Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 86

Win XP/2000/7
TurboPacal 7.0; Delphi 2/5/7; BDS 2006/2010/XE6; C#; MSSQl 2000
BeitragVerfasst: Mo 02.04.12 07:55 
user profile icondummzeuch hat folgendes geschrieben Zum zitierten Posting springen:
Hi,

user profile iconErichgue hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,
ich habe mir eine Klasse von TVirtualStringTree abgeleitet und kann im zur Entwurfzeit Knoten (Nodes) hinzufügen.
Aber sobald der Tree zur Entwurfszeit Knoten hat spielt meine IDE verückt.
Da kommen beim neukompilieren des Packages, oder mal einfach so,
nach dem das Formular mit der Komponente geschlossen wurde Zugriffsverletzungen und Fehlermeldungen.

Irgendwie scheint es nach dem Zerstören der Komponente mit dem Speichermanager zusammen zu hängen.
(borlndmm.SysFreeMem)

Hat hier jemand Erfahrung damit?


Mit von TVirtualStringTree abgeleiteten Komponenten nicht, aber generell mit Komponentenentwicklung: Ich trage dann immer die IDE unter Run/Parameters als Host-Application ein und debugge. Vielleicht hilft Dir das ja schon?

twm


Das ist ein guter Hinweis und hört sich interessant an.
Ich habe damit noch nie gearbeitet, wie genau muss ich da vor gehen?
Die bds.exe steh in den Parameter als Host-Application.
Weiter weiß ich nicht.

Gruß

Erich
Erichgue Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 86

Win XP/2000/7
TurboPacal 7.0; Delphi 2/5/7; BDS 2006/2010/XE6; C#; MSSQl 2000
BeitragVerfasst: Mo 02.04.12 08:00 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Irgendwo musst du ja die Knoten speichern. Ich vermute, dass du dabei irgendwo noch auf schon freigegebene Speicherbereiche zugreifst.

Da bleibt im Grunde nur ganz genau zu schauen wann was freigegebein wird. Am besten vielleicht in einem Test mit wenigen Knoten oder so. Und natürlich mit entsprechendem Logging.

Das kommt halt davon, wenn man unbedingt mit Gewalt Datenhaltung und GUI vermischen muss... Selbst mit einer Komponente, die die Trennung so einfach macht... :autsch:


Die Knoten stehen in der DFM-Datei.
Das mit dem Speicherfreigeben habe ich schon durchgetestet - an dem liegt es nicht.
Zur Laufzeit geht ohne Probleme.

Meine Vermutung ist die, das der VirtualTree im Entwurfsmodus nicht mitbekommt, das der Tree oder die Nodes zerstört wurden (Messages),
und versucht über eine Thread (TWorkerThread) oder so noch weiter auf die Knoten zuzugreifen.

Gruß

Erich