Difference between revisions of "TFileStream"
From Free Pascal wiki
Jump to navigationJump to search (Fix not setting result in "read 8 bytes" example) |
|||
(15 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{TFileStream}} | {{TFileStream}} | ||
− | A '''TFileStream''' is a descendant of [[TStream]] that | + | A '''TFileStream''' is a descendant of [[TStream]] that gets/stores its data from/to a file on disk. |
− | |||
− | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
! Constant !! Decimal !! Description | ! Constant !! Decimal !! Description | ||
Line 28: | Line 26: | ||
|} | |} | ||
− | read | + | * read entire file ''fnam'' into a string. |
− | <syntaxhighlight> | + | |
− | function readstream( fnam: string ): string; | + | <syntaxhighlight lang="pascal"> |
+ | function readstream(fnam: string): string; | ||
var | var | ||
strm: TFileStream; | strm: TFileStream; | ||
+ | n: longint; | ||
txt: string; | txt: string; | ||
begin | begin | ||
txt := ''; | txt := ''; | ||
− | strm := TFileStream.Create( fnam, fmOpenRead or fmShareDenyWrite ); | + | strm := TFileStream.Create(fnam, fmOpenRead or fmShareDenyWrite); |
try | try | ||
− | SetLength( txt, | + | n := strm.Size; |
− | + | SetLength(txt, n); | |
+ | strm.Read(txt[1], n); | ||
finally | finally | ||
− | + | strm.Free; | |
end; | end; | ||
result := txt; | result := txt; | ||
Line 47: | Line 48: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Write ''txt'' to file fnam. | + | * read 8 bytes of ''fnam'' into a byte array: |
− | <syntaxhighlight> | + | |
− | procedure writestream( fnam: string; txt: string ); | + | <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); | ||
var | var | ||
strm: TFileStream; | strm: TFileStream; | ||
n: longint; | n: longint; | ||
begin | begin | ||
− | strm := TFileStream.Create( fnam, fmCreate ); | + | strm := TFileStream.Create(fnam, fmCreate); |
− | n := Length( txt ); | + | n := Length(txt); |
try | try | ||
strm.Position := 0; | strm.Position := 0; | ||
− | strm.Write( txt[1], n ); | + | strm.Write(txt[1], n); |
finally | finally | ||
− | + | strm.Free; | |
end; | end; | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | [[ | + | == See also == |
− | + | * [[File types]] | |
+ | * [[doc:rtl/classes/tfilestream.html|TFileStream 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;