Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Strings in einen Stream lesen/schreiben

  Alt 15. Feb 2007, 09:43
Besitzer von BDS/TD könnten auch eine unterstützende Klasse ("class helper") einsetzen:

Delphi-Quellcode:
type
  TStreamHelper = class helper for TStream
  public
    function ReadString: string;
    procedure WriteString (const s: string);
  end;

function TStreamHelper.ReadString: string;
var
  len : Integer;
begin
  ReadBuffer(len, SizeOf(len));
  SetLength (Result, len);
  if (len > 0) then
    ReadBuffer(Result[1], len);
end;

procedure TStreamHelper.WriteString (const s: string);
var
  len : Integer;
begin
  len := Length(s);
  WriteBuffer(len, SizeOf(len));
  if (len > 0) then
    WriteBuffer(s[1], len);
end;
Verwendung:

Delphi-Quellcode:
procedure TForm1.Button1Click (Sender: TObject);
var
  Stream : TFileStream;
begin
  Stream := TFileStream.Create('test.stm', fmCreate);
  Stream.WriteString ('Testtext');
  Stream.Free;
end;

procedure TForm1.Button2Click (Sender: TObject);
var
  Stream : TFileStream;
begin
  Stream := TFileStream.Create('test.stm', fmOpenRead);
  ShowMessage (Stream.ReadString);
  Stream.Free;
end;
Der Vorteil dieser Lösung: sie funktioniert mit allen Nachfahren von TStream.

Gruß Hawkeye
  Mit Zitat antworten Zitat