Home » Tutorials » Datenspeicherung » Streams
Streams
MemoryStream
Wie bereits in der Einleitung gesagt, bestimmt alleine die Stream-Klasse wohin die Daten tatsächlich geschrieben werden. Indem wir TFileStream durch TMemoryStream austauschen, können wir bewirken, dass unsere Daten nicht in einer Datei, sondern im Hauptspeicher landen.
procedure TFrmMain.BtnSaveClick(Sender: TObject); var Daten: TDatenArray; Stream: TStream; I: integer; Len: LongInt; begin SetLength(Daten, 2); Daten[0].ID := 1; Daten[0].Name := 'Ein Name'; Daten[1].ID := 2; Daten[1].Name := 'Ein anderer Name'; Stream := TMemoryStream.Create; try Len := Length(Daten); Stream.Write(Len, SizeOf(Len)); for I := 0 to Length(Daten) - 1 do begin Stream.Write(Daten[I].ID, SizeOf(Daten[I].ID)); Len := Length(Daten[I].Name); Stream.Write(Len, SizeOf(Len)); Stream.Write(PChar(Daten[I].Name)^, Len); end; // Hier könnten wir z.B. die // Daten des MemoryStreams an die Windows-Zwischenablage übergeben finally Stream.Free; end; end;
Die Methode ist bis auf zwei Stellen identisch mit der Methode, die wir in „Daten in einer Datei speichern“ entwickelt haben.
Hier wird eine Instanz von TMemoryStream erzeugt und nicht eine von TFileStream. Der Kommentar müsste noch durch irgendeinem Code ersetzt werden, der etwas Sinnvolles mit dem Stream anfängt. Nachdem der Stream freigegeben wurde, sind alle Daten weg.