Einzelnen Beitrag anzeigen

Benutzerbild von JPSelter
JPSelter

Registriert seit: 24. Jan 2005
Ort: Attendorn/Sauerland
235 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: VirtualTreeView: Es klappt nicht ganz

  Alt 31. Mai 2006, 15:35
OK, jetzt habe ich folgenden Code und eine EAccessViolation:

Delphi-Quellcode:
// save nodes to disk
procedure TForm1.VST1SaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Stream: TStream);
var
  Data: PTreeData;
  Len: integer;
begin
  Data := VST1.GetNodeData(Node);
  Stream.Write(TSessionObject(Data.FObject).datum, SizeOf(TSessionObject(Data.FObject).datum));
  Len := Length(TSessionObject(Data.FObject).name);
  Stream.Write(Len, SizeOf(Len));
  Stream.write(PChar(TSessionObject(Data.FObject).name)^, Len);
  //[... die restlichen Parameter]
end;
Delphi-Quellcode:
// load nodes from disk
procedure TForm1.VST1LoadNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Stream: TStream);
var
  Data: PTreeData;
  Len,datum,ndatum: integer;
  SessionObject: TSessionObject;
  name,sessiontyp,protokollant,teilnehmer,verteiler: string;
begin
  Data := VST1.GetNodeData(Node);
  SessionObject:=TSessionObject.Create;

  Stream.Read(datum, SizeOf(datum));
  Stream.read(Len, SizeOf(Len));
  SetLength(name, Len);
  Stream.read(name, Len);
  // [... + der rest]

  SessionObject.datum:=datum;
  SessionObject.name:=name; // <--------------- hier kommt die Exception
  // [... + der rest]

  Data^.FObject:=SessionObject;
end;
Aber wieso die Exception? Irgendwo ein Pointer oder ein Objekt nicht richtig?

EDIT: Habe die Zeile markiert, wo die Exc geworfen wird. Muss aber jetzt leider für heute weg. Komme beim nächsten Arbeitstag wieder auf diesen Thread zurück. Danke soweit!
=JPSelter=

Visit www.ditonovia.de for our breathtaking movies: Herrin der Ringe (Fantasy 2005), Hemisphere (Science-Fiction 2004) & Braveknife (Parodie 2001) and more...
  Mit Zitat antworten Zitat