Difference between revisions of "TFileStream"

From Free Pascal wiki
Jump to navigationJump to search
(Remove incorrect statement that TFileStream reads entire file. Avoid FreeAndNil of local variables.)
(Fix not setting result in "read 8 bytes" example)
 
(6 intermediate revisions by 2 users not shown)
Line 26: Line 26:
 
|}
 
|}
  
* read entire file ''fnam'' to a string.
+
* read entire file ''fnam'' into a string.
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="pascal">
 
function readstream(fnam: string): string;
 
function readstream(fnam: string): string;
 
var
 
var
Line 47: Line 48:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
* Write a string ''txt'' to file ''fnam''.
+
* read 8 bytes of ''fnam'' into a byte array:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang="pascal">
 +
..
 +
type
 +
    TByte8Array = array [0..7] of byte;
 +
..
 +
function readstream(fnam: string; position= integer): TByte8Array;
 +
var
 +
  strm : TFileStream;
 +
begin
 +
  strm := TFileStream.Create(fnam, fmOpenRead or fmShareDenyWrite);
 +
  try
 +
    strm.Position:=position;
 +
    strm.Read (Result[0],8);
 +
  finally
 +
    strm.Free;
 +
  end;
 +
end;
 +
</syntaxhighlight>
 +
 
 +
* Write a string ''txt'' to the file ''fnam''.
 +
 
 +
<syntaxhighlight lang="pascal">
 
procedure writestream(fnam: string; txt: string);
 
procedure writestream(fnam: string; txt: string);
 
var
 
var
Line 66: Line 89:
  
 
== See also ==
 
== See also ==
 +
* [[File types]]
 
* [[doc:rtl/classes/tfilestream.html|TFileStream doc]]
 
* [[doc:rtl/classes/tfilestream.html|TFileStream doc]]
 
* [[doc:rtl/classes/tstream.html|TStream doc]]
 
* [[doc:rtl/classes/tstream.html|TStream doc]]

Latest revision as of 16:22, 12 April 2022

Deutsch (de) English (en) français (fr) polski (pl)

A TFileStream is a descendant of TStream that gets/stores its data from/to a file on disk.

Constant Decimal Description
fmCreate 65280 Creates a new file
fmOpenRead 0 opens a file for reading
fmOpenWrite 1 opens a file for writing
fmOpenReadWrite 2 opens a file for reading and writing
fmShareDenyWrite 32 prohibit writing if file is already opened
  • read entire file fnam into a string.
function readstream(fnam: string): string;
var
  strm: TFileStream;
  n: longint;
  txt: string;
begin
  txt := '';
  strm := TFileStream.Create(fnam, fmOpenRead or fmShareDenyWrite);
  try
    n := strm.Size;
    SetLength(txt, n);
    strm.Read(txt[1], n);
  finally
    strm.Free;
  end;
  result := txt;
end;
  • read 8 bytes of fnam into a byte array:
..
type
    TByte8Array = array [0..7] of byte;
..
function readstream(fnam: string; position= integer): TByte8Array;
var
  strm : TFileStream;
begin
  strm := TFileStream.Create(fnam, fmOpenRead or fmShareDenyWrite);
  try
    strm.Position:=position;
    strm.Read (Result[0],8);
  finally
    strm.Free;
  end;
end;
  • Write a string txt to the file fnam.
procedure writestream(fnam: string; txt: string);
var
  strm: TFileStream;
  n: longint;
begin
  strm := TFileStream.Create(fnam, fmCreate);
  n := Length(txt);
  try
    strm.Position := 0;
    strm.Write(txt[1], n);
  finally
    strm.Free;
  end;
end;

See also