![]() |
Datei schnell in VST laden
Hallo,
Ich arbeite heute zum ersten mal mit dem Virtual String Tree und habe bis jetzt nur das DP Stammtisch Video gesehen. Jetzt wollte ich zum testen mal die Zeilen einer Datei in erste Spalte schreiben. Das habe ich so gemacht:
Delphi-Quellcode:
Ist es so richtig, oder kann man es auch besser machen?
procedure TForm1.Button1Click(Sender: TObject);
var F: TextFile; sLine: string; begin AssignFile(F, 'C:\test.txt'); try Reset(F); try VST.BeginUpdate; try while not EOF(F) do begin ReadLn(F, sLine); String(VST.GetNodeData(VST.AddChild(nil))^) := sLine; end; finally VST.EndUpdate; end; finally CloseFile(F); end; except end; end; procedure TForm1.FormCreate(Sender: TObject); begin vst.NodeDataSize := SizeOf(String); end; procedure TForm1.vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); begin CellText := String(VST.GetNodeData(Node)^); end; Ich finde, dass es sehr langsam und nicht sehr effektiv ist. Danke! |
Re: Datei schnell in VST laden
Hallo, wie viele Zeilen hat die Datei / Wie viele Sek. dauert der Ladevorgang?
|
Re: Datei schnell in VST laden
ich denke das problem wird die schleife sein.
speziell diese zeile:
Delphi-Quellcode:
da hier der speicher jedesmal für den string reserviert wird und sline einkopiert wird.
String(VST.GetNodeData(VST.AddChild(nil))^) := sLine;
wenn du die zeilenanzahl kennst solltest du den vst über rootnodecount und initnode befüllen, bei gleichzeitiger shortstring nutzung und den records. so würde der benötigte platz auf einmal reserviert werden. |
Re: Datei schnell in VST laden
Warum wird denn nicht VST.LoadFromFile / .SaveToFile zusammen mit den OnLoadNode- / OnSaveNode-Events verwendet? :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 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