Einzelnen Beitrag anzeigen

matz

Registriert seit: 9. Sep 2003
31 Beiträge
 
#9

Re: Abspeichern von Objekten ??

  Alt 19. Okt 2005, 09:52
nachdem ich mir diverse Beiträge gestern durchgelesen habe, habe ich folgendes probiert

Laden:
Delphi-Quellcode:
      
       else if typ = 'TStringListthen Begin
          dStrings := TStringList.Create;

          MemoryStream := TMemoryStream.Create;
          MemoryStream.Position := 0;
          size := Reader.ReadInteger;
          memorystream.SetSize(size);
          reader.Read(MemoryStream.Memory^, Size);

          MemoryStream.Position := 0;
          dstrings.LoadFromStream(MemoryStream);

          SetObjectProp(self, PropList^[i].Name, dstrings);

          end;
Speichern:

Delphi-Quellcode:
      else if typ = 'TStringListthen Begin
          MemoryStream := TMemoryStream.Create;
          MemoryStream.Position := 0;
          sl_temp.SaveToStream(MemoryStream);
          MemoryStream.Position := 0;
          size := MemoryStream.Size;
          writer.WriteInteger(size);
          MemoryStream.Position := 0;
          Writer.Write(MemoryStream.Memory^, size);
        end;
wobei ich heute Deinen Vorschlag die Stringliste direkt beim speichern als Memorystream zu speichern mal testen werde

Delphi-Quellcode:
s := Tstringlist.Create;
s := (GetObjectProp(self, PropList^[i].Name) as tStringList);
zur Zeit erzeuge ich relativ unelegant und nicht in das Konzept passend direkt in der Routine 'TMyObjectlist.savetostream'
Delphi-Quellcode:
  for i:=0 to c-1 do begin
    // Schreiben des TBaseObjects-Typen-Namen
    WriteClassRef(Writer, Items[i]);
    // Speichern der gewünschten Informationen
    Header := Items[i] as lHeader;
    sl_temp := tStringlist.create;
    sl_Temp := header.RegistrierNr;
    Items[i].SaveToStream(Writer);
    sl_temp.Free;
  end;
den daraus resultierenden Memorystream speichere ich dann in den Hauptstream

des geht zur Zeit sehr gut
  Mit Zitat antworten Zitat