Einzelnen Beitrag anzeigen

Benutzerbild von Taladan
Taladan

Registriert seit: 5. Aug 2003
Ort: Osnabrück
505 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Stream im Stream abspeichern

  Alt 25. Mär 2004, 13:49
Hab den Fehler gefunden. Es lag daran das der Pointer beim auslesen natürlich am ende der Datei lag und den mußte man erst an den Anfang setzen.

Delphi-Quellcode:
procedure TFormDateneingabeBuecher.BtAddClick(Sender: TObject);
Var Stream : TMemoryStream;
begin
     Stream := TMemoryStream.Create;
     Memo1.Lines.SaveToStream(Stream);
     Stream.Position := 0; // hier
     BefBuecher.Schreiben(StrToInt(Edit1.Text),Edit2.Text,Edit3.Text, Stream);
end;
procedure TBuecher.Schreiben(ID: Integer; Abkuerzung : String; Titel: Ansistring; Langbeschreibung : TStream);
var
  Stream: TStream;
  I,I1: integer;
  V : Integer;
  Len, Len2, Len3: Longint;
  Dateiversion : Integer;
begin
  Dateiversion := 1;

  SetLength(Buecher, length(Nachteil) + 1);

  Buecher[High(Buecher)].ID := ID;
  Buecher[High(Buecher)].Abkuerzung := Abkuerzung;
  Buecher[High(Buecher)].Titel := Titel;
  Buecher[High(Buecher)].Langbeschreibung := Langbeschreibung;

  Stream := TFileStream.Create('Buecher.tdt', fmCreate);
  try
         Stream.Write(Dateiversion, SizeOf(Dateiversion)); //Dateiversion

         Len := Length(Buecher);
         Stream.Write(Len, SizeOf(Len));

         for I := 0 to Length(Buecher) - 1 do
         begin
              Stream.Write(Buecher[I].ID, SizeOf(Buecher[I].ID));

              Len2 := Length(Buecher[I].Abkuerzung);
              Stream.Write(Len2, SizeOf(Len2));
              Stream.Write(PChar(Buecher[I].Abkuerzung)^, Len2);

              Len2 := Length(Buecher[I].Titel);
              Stream.Write(Len2, SizeOf(Len2));
              Stream.Write(PChar(Buecher[I].Titel)^, Len2);

              Len2 := Buecher[I].Langbeschreibung.size;
              Stream.Write(Len2, SizeOf(Len));
              Stream.CopyFrom(Buecher[I].Langbeschreibung, Len2);
         end;
  finally
    Stream.Free;
  end;
end;
Marco
Wer Rechtschreibfehler findet, der darf sie behalten

Carpe Diem - Nutze den Tag (und zwar den ganzen!)
  Mit Zitat antworten Zitat