Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Probleme mit VirtualStringTree und Nodes zu Entwurfszeit
Erichgue - Fr 30.03.12 16:41
Titel: Probleme mit VirtualStringTree und Nodes zu Entwurfszeit
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 - Fr 30.03.12 17:40
Hi,
Erichgue hat folgendes geschrieben : |
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 - Sa 31.03.12 01: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 - Mo 02.04.12 08:55
dummzeuch hat folgendes geschrieben : |
Hi,
Erichgue hat folgendes geschrieben : | 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 - Mo 02.04.12 09:00
jaenicke hat folgendes geschrieben : |
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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!