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 TVirtualTree:Spalteninhalt wird beim Speichern abgeschnitten (https://www.delphipraxis.net/135941-tvirtualtree-spalteninhalt-wird-beim-speichern-abgeschnitten.html)

Hedge 20. Jun 2009 17:14


TVirtualTree:Spalteninhalt wird beim Speichern abgeschnitten
 
Beim Speichern mit VST.SaveToFile(); muss ein Fehler auftreten.
Die 2. Spalte in meinem VirtualTreeView wird jedes Mal um unterschiedlich viele Zeichen gekürzt.
Meine Datenstruktur sieht so aus:

Delphi-Quellcode:
type
  PTreeData = ^TTreeData;
  TTreeData = record
    FCaption: String;
    FColumn1: String;
    ImageIndex: integer;
  end;
Hier noch die Ereignis-Methode fürs Speichern:
(habe die wie im Tutorial von delphi-treff gemacht)

Delphi-Quellcode:
procedure TForm1.VSTSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Stream: TStream);
var
  Data: PTreeData;
  Len1,Len2: integer;
begin
  Data := VST.GetNodeData(Node);

  Len1 := Length(Data.FCaption);
  Stream.write(Len1, SizeOf(Len1));
  Stream.write(PChar(Data.FCaption)^, Len1);

  Len2 := Length(Data.FColumn1);
  Stream.write(Len2, SizeOf(Len2));
  Stream.write(PChar(Data.FColumn1)^, Len2);

  Stream.Write(Data.ImageIndex, SizeOf(Data.ImageIndex));
end;

Bernhard Geyer 20. Jun 2009 17:20

Re: TVirtualTree:Spalteninhalt wird beim Speichern abgeschni
 
Typischer D2009 (Unicode-Fehler):

Delphi-Quellcode:
  Stream.read(PChar(Data.FCaption)^, Len1*SizeOf(Char);

  ...

  Stream.write(PChar(Data.FColumn1)^, Len2*SizeOf(Char);
Jedes Char braucht in D2009 2 Bytes!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 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