Hallo zusammen
Dieser Code war meine Grundlage:
Delphi-Quellcode:
type
TTreeData = record
FCaption: string;
FColumn1: string;
end;
PTreeData = ^TTreeData;
...
procedure TForm1.Button2Click(Sender: TObject);
var
Node : PVirtualNode;
Data:PTreeData;
begin
//Data ist nur ein Pointer auf eine Datenstruktur von TTreeData;
vst.BeginUpdate;
//Zuerst holen wir uns den Node
Node := VST.AddChild(nil);
//VST kennt bereits die grösse der Struktur und hat hier genau soviel Speicher bereit gestellt
//Wir übergeben Data nun die Adresse des Speichers von VST.
Data := vst.GetNodeData(node);
//Nun können wir direkt in den Node Speicher hinein schreiben.
Data^.FCaption := 'Test';
Data^.FColumn1 := 'Column';
vst.EndUpdate;
end;
Wie man erkennen kann, handelt es sich um VirtualTreeView.
Ich habe nun versucht anstelle des Records ein dynamisches array bestehend aus strings zu benutzen.
Dazu habe ich folgendes versucht:
Delphi-Quellcode:
type
TsqlData =
array of string;
PsqlData = ^TsqlData;
...
function TeVCLqueryTable.Query(
Query:
string):integer;
var
row,col:integer;
node:PVirtualNode;
sqlData:PsqlData;
begin
FMySQL.Query(
Query);
//SQLColCount ist 11
for col := 0
to FMySQL.SQLColCount - 1
do begin
FVST.Header.Columns.Add;
end;
FVST.BeginUpdate;
SetLength(sqlData^,FMySQL.SQLColCount);
//SQLColCount ist 11
FVST.NodeDataSize := sizeof(sqlData);
node := FVST.AddChild(
nil);
sqlData := FVST.GetNodeData(node);
sqlData^[0] := '
Test';
//<-- Hier kommt eine exception
Result := FMySQL.SQLRowCount;
FVST.EndUpdate;
end;
Ich wäre froh, wenn mir hier jemand weiterhelfen könnte.
Es geht um das Problem mit den Pointern.
Irgendwas mache ich falsch ^^
Danke