AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi IUnknown / XML-Link im TreeView
Thema durchsuchen
Ansicht
Themen-Optionen

IUnknown / XML-Link im TreeView

Ein Thema von StTüff · begonnen am 22. Aug 2007 · letzter Beitrag vom 23. Aug 2007
 
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#1

IUnknown / XML-Link im TreeView

  Alt 22. Aug 2007, 13:17
Hallo!

Ich habe vor einiger Zeit mit Eurer Hilfe (vor allem marabu hat mir sehr geholfen) eine Funktion ausgeknobelt, mit der man durch vergleichen der Zeiger herausfinden kann, welcher XML-Knoten zum entsprechenden Treeviewknoten gehört.
Siehe auch:
http://www.delphipraxis.net/internal...220&highlight=

Die Funktion sieht wie folgt aus:
Delphi-Quellcode:
function FindTreeNodeXML(LinkedXMLNode:IXMLDOMNode):TTreeNode;
var
  cnt:integer;
  u_LinkedNode, u_chekNode : IUnknown;
begin
  //Durch alle Knoten laufen
  for cnt:= 0 to form1.TrView_Struktur.Items.Count-1 do
  begin
    u_chekNode := PNodeState(form1.TrView_Struktur.
                  Items[cnt].Data).XMLNode as IUnknown;
    u_LinkedNode := LinkedXMLNode as IUnknown;
    if u_chekNode = u_LinkedNode then
    begin
      result:=form1.TrView_Struktur.Items[cnt];
      exit;
    end;
  end;
  result:=nil;
end;
Das funktioniert soweit wunderbar. Leider kommte es aber sehr selten dazu, dass die Zeiger nicht mehr zueinander passen, obwohl (nachweislich) sowohl der XML-, als auch der Treeviewknoten noch vorhanden ist. Wenn die Baumansicht aktualisiert bzw. neu aufgebaut wird, stimmen die Zeiger wieder.

Da ich zwar beim Vergleich das Elemtarinterface (IUnknown) verwende, aber zu den TreeView-Knoten einfach den Zeiger auf den XML-Knoten, ist meine Vermutung, dass dieses Problem durch eine Aktion des Betriebssystems hervorgerufen wird, die dafür sorgt, dass die Zeiger nicht mehr zueinander passen?

Ist meine Theorie richtig?
Wenn ich schonn beim Speichern des Zeigers im Treeview IUnknown verwenden würde, würde das das Problem lösen?

Das Problem tritt sehr selten (meist nach langer Wartezeit) auf und ist dementsprechend schwer zu reproduzieren. Wenn es aber auftritt, so sind alle Zeiger, die im Treeview abgelegt wurden, betroffen.

Hat jemand eine Idee hierzu? Was kann die Ursache sein?

Gruß,

StTüff
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 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-2025 by Thomas Breitkreuz