Beispiel 1
unit uDatei1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
bSchreibe: TButton;
bLese: TButton;
lbEin: TListBox;
procedure bSchreibeClick(Sender: TObject);
procedure bLeseClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.bSchreibeClick(Sender: TObject);
var
stream : TFileStream;
i : integer;
h : byte;
begin
stream := TFileStream.Create('abc.txt',fmCreate);
for i := 1 to 16 do
begin
h := i;
stream.Write(h,1);
end;
stream.Free;
end;
procedure TForm1.bLeseClick(Sender: TObject);
var
stream : TFileStream;
i : integer;
b : byte;
begin
lbEin.Clear;
stream := TFileStream.Create('abc.txt',fmOpenRead);
for i := 1 to stream.Size do
begin
stream.read(b,1);
lbEin.Items.Add(IntToStr(b));
end;
stream.Free;
end;
end.
Links
Beispiel 2: pbm-P1-Datei in Memo einlesen
procedure TForm1.bLiesEinClick(Sender: TObject);
var
datei : TFileStream;
ch : char;
i,j,w,h : integer;
magic,width,height,zeile : string;
begin
datei := TFileStream.Create('crypt5_fax.pbm',fmOpenRead);
// 'magic number' lesen
magic := '';
datei.read(ch,1); magic := ch;
datei.read(ch,1); magic := magic+ch;
mAusgabe.Lines.Add(magic);
// whitespaces überlesen
repeat
datei.read(ch,1);
until not (ch in [#32,#8,#10,#13]);
// width lesen
width := '';
while not (ch in [#32,#8,#10,#13]) do
begin
width := width+ch;
datei.read(ch,1);
end;
w := StrToInt(width);
mAusgabe.Lines.Add(IntToStr(w));
// weitere whitespaces überlesen
while ch in [#32,#8,#10,#13] do datei.read(ch,1);
// height lesen
height := '';
while not (ch in [#32,#8,#10,#13]) do
begin
height := height+ch;
datei.read(ch,1);
end;
h := StrToInt(height);
mAusgabe.Lines.Add(IntToStr(h));
// weitere whitespaces überlesen
while ch in [#32,#8,#10,#13] do datei.read(ch,1);
// Daten einlesen, ch enthält erstes Datum
for j := 1 to h-1 do
begin
// Zeile einlesen
zeile := '';
for i := 1 to w do
begin
zeile := zeile+ch;
repeat datei.read(ch,1); until not (ch in [#32,#8,#10,#13]);
end;
mAusgabe.Lines.Add(zeile);
end;
// letzte Zeile einlesen
zeile := '';
for i := 1 to w-1 do
begin
zeile := zeile+ch;
repeat datei.read(ch,1); until not (ch in [#32,#8,#10,#13]);
end;
zeile := zeile+ch;
mAusgabe.Lines.Add(zeile);
// DEBUG-Informationen
mAusgabe.Lines.Add('Position = '+IntToStr(datei.Position));
mAusgabe.Lines.Add('Size = '+IntToStr(datei.Size));
if datei.Position = datei.Size-1
then
mAusgabe.Lines.Add('Dateiende erreicht!');
// Stream freigeben
datei.Free;
end;
datei0.zip