unit FileStreamHilfeUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
Edit18: TEdit;
Edit19: TEdit;
Edit20: TEdit;
Edit21: TEdit;
Edit22: TEdit;
Edit23: TEdit;
Edit24: TEdit;
Edit25: TEdit;
Edit26: TEdit;
Button1: TButton;
Button2: TButton;
DatenSatzNr: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
const strLaenge= 20;
// Strings sind 20 Zeichen lang.
type
TDatum =
packed record
T: Word;
M: Word;
J: Word;
Zh:
string[strLaenge];
Zm:
string[strLaenge];
B:
string[strLaenge];
O:
string[strLaenge];
T1:
string[strLaenge];
T2:
string[strLaenge];
T3:
string[strLaenge];
T4:
string[strLaenge];
P:
string[strLaenge];
N:
string[strLaenge];
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Stream_MW_Rec_Anhaengen
(f: TFileStream; MWRec: TDatum): boolean;
begin
try
f.Position:=0;
f.Seek(0, soFromEnd);
// Datenzeiger auf das Ende des Streams setzen.
f.WriteBuffer(MWRec, SizeOf(TDatum));
result:= TRUE;
except
ShowMessage('
Es ist beim Datensatz speichern ein Fehler aufgetreten!');
result:= FALSE;
end;
end;
function Stream_MW_Rec_Lesen (f: TFileStream;
var MWRec: TDatum;
DatensatzNr: integer): boolean;
begin
try
f.Position:=0;
// An dieser Stelle wird der Datei-Zeiger auf den zu lesenden
// Datensatz gestellt. Durch -soFromBeginning- wird der Dateizeiger
// auf den Anfang gesellt.
f.Seek((SizeOf(TDatum)*DatensatzNr), soFromBeginning);
f.ReadBuffer(MWRec, SizeOf(TDatum));
result:= TRUE;
except
ShowMessage('
Es ist beim Datensatz lesen ein Fehler aufgetreten!');
result:= FALSE;
end;
end;
function Stream_MW_Rec_DatenSatzAnzahl
(f: TFileStream; MWRec: TDatum): integer;
begin
result:= 0;
if f.Size>0
then
begin
// Berechnung: Gesamte Stream-Lämge / TMW_Stream_Rec
// Das ergibt die Datensatz-Anzahl
result:= trunc(f.Size/SizeOf(TDatum));
end;
end;
function Stream_oeffnen (
var f: TFileStream ;
const DateiName:
string): boolean;
begin
result:= TRUE;
try
{-- FileStream zum Lesen u. Schreiben uneingeschränkt öffnen -----------}
f:= TFileStream.Create(DateiName, fmOpenReadWrite
or fmShareDenyNone)
except
try
{ FileStream neu anlegen, tritt hier ein Fehler auf so wird das Prg. ab- }
{ gebrochen und zur der aufrufende Routine zurückgesprungen. }
f:= TFileStream.Create(DateiName, fmCreate
or fmShareDenyNone);
except
ShowMessage('
Fehler beim Erzeugen der Datei:'+#13+DateiName);
Exit;
// Zur aufrufenden Routine zurück.
end;
result:= FALSE;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var f: TFileStream;
TDatum_Rec: TDatum;
begin
with TDatum_Rec
do
begin
T:= strtoint(Edit1.Text);
M:= strtoint(Edit2.Text);
J:= strtoint(Edit3.Text);
Zh:= Edit4.Text;
Zm:= Edit5.Text;
B:= Edit6.Text;
O:= Edit7.Text;
T1:= Edit8.Text;
T2:= Edit8.Text;
T3:= Edit9.Text;
T4:= Edit10.Text;
P:= Edit11.Text;
N:= Edit12.Text;
end;
Stream_oeffnen (f ,'
f:\TMData.dat');
Stream_MW_Rec_Anhaengen (f, TDatum_Rec);
f.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var f: TFileStream;
TDatum_Rec: TDatum;
begin
Stream_oeffnen (f ,'
c:\TMData.dat');
Stream_MW_Rec_Lesen (f, TDatum_Rec, strtoint(DatensatzNr.Text)-1);
with TDatum_Rec
do
begin
Edit14.Text:= inttostr(T);
Edit15.Text:= inttostr(M);
Edit16.Text:= inttostr(J);
Edit17.Text:=Zh;
Edit18.Text:=Zm;
Edit19.Text:=B;
Edit19.Text:=O;
Edit20.Text:=T1;
Edit21.Text:=T2;
Edit22.Text:=T3;
Edit23.Text:=T4;
Edit24.Text:=P;
Edit25.Text:=N;
end;
end;
end.