Registriert seit: 5. Aug 2003
Ort: Osnabrück
505 Beiträge
Delphi 2005 Professional
|
Re: Stream im Stream abspeichern
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!)
|
|
Zitat
|