Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Exception bei VST.EndUpdate (TVirtualStringTree). (https://www.delphipraxis.net/183233-exception-bei-vst-endupdate-tvirtualstringtree.html)

Bjoerk 22. Dez 2014 13:47


Exception bei VST.EndUpdate (TVirtualStringTree).
 
Hab keine Ahnung wieso? :gruebel:

Delphi-Quellcode:
procedure TSomeForm.AssignToVST(Grid: TGrid);
var
  I, J: integer;
  Data: PVstNodeData;
  Node, Temp: PVirtualNode;
begin
  if (Grid.RowCount > 0) and (Grid.ColCount > 0) then
  begin
    VST.BeginUpdate;
    try
      VST.Clear;
      for I := 0 to Grid.RowCount - 1 do
      begin
        Node := VST.AddChild(Nil);
        Data := VST.GetNodeData(Node);
        Data.Caption := Grid.Cells[I, 0];
        Data.Row := I;
        Data.Col := 0;
        for J := 1 to Grid.ColCount - 1 do
        begin
          Temp := VST.AddChild(Node);
          Data := VST.GetNodeData(Temp);
          Data.Caption := Grid.Cells[I, J];
          Data.Row := I;
          Data.Col := J;
        end;
      end;
    finally
      VST.EndUpdate;
    end;
  end;
end;

gmc616 22. Dez 2014 14:24

AW: Exception bei VST.EndUpdate (TVirtualStringTree).
 
Kann mir nicht vorstellen, dass es im EndUpdate knallt.

Ich hätte vielmehr die Zeilen:
Delphi-Quellcode:
Data := VST.GetNodeData(Node);
Data.Caption := Grid.Cells[I,0];
im Verdacht.

GetNodeData liefert wahrscheinlich NIL zurück, da dem Node garkein "Data" zugewiesen worden ist.
Anschließend versuchst du dem NIL eine Caption zu geben.
Hier knallst natürlich und der Debugger bleibt im Finally stehen, was den Eindruck erweckt, das EndUpdate würde die Exception auslösen.

Lasse doch mal Try..Finally spaßeshalber weg und schaue dir den zweiten Parameter von VST.AddChild an.

Bjoerk 22. Dez 2014 15:17

AW: Exception bei VST.EndUpdate (TVirtualStringTree).
 
Nee, is nich nil. Aber hast mich trotzdem auf die richtige Fährte gebracht. VST.NodeDataSize := SizeOf(TVstNodeData); vergessen. :oops:

himitsu 22. Dez 2014 16:30

AW: Exception bei VST.EndUpdate (TVirtualStringTree).
 
Und das nächste Mal könnte jemand spaßeshalber auch was ganz Unwichtiges erwähnen,
wie z.B. die Fehlermeldung (was war es für eine Exception und wie lautet der Text) und an welcher Stelle (Zeile/Befehl) knallt es. :stupid:

Bjoerk 22. Dez 2014 18:02

AW: Exception bei VST.EndUpdate (TVirtualStringTree).
 
Das weiß ich selbst. Hätte ich natürlich gepostet, wenn‘s denn eine gegeben hätte. Hier war nur Brutalabsturz mit Kernel Info. :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz