unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FileServer, StdCtrls;
type
TTestRec =
record
Feld1:
String;
Feld2:
String;
Feld3:
String;
end;
type
TForm1 =
class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
btnOk: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo: TMemo;
procedure FormDestroy(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure btnOkClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FStream: TFileStream;
FReader: TFileStream;
FileReader: TReader;
FFileWriter: TWriter;
FTestFields: TTestRec;
public
{ Public declarations }
procedure CreateFileForWrite;
procedure CreateWnd;
override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnOkClick(Sender: TObject);
begin
FFileWriter.WriteString(FTestFields.Feld1);
FFileWriter.WriteString(FTestFields.Feld2);
FFileWriter.WriteString(FTestFields.Feld3);
end;
procedure TForm1.CreateFileForWrite;
var
Directory:
String;
begin
Directory := GetCurrentDir;
if Directory[Length(Directory)]<>'
\'
then Directory := Directory + '
\';
FStream := TFileStream.Create(Directory+'
Testfile.def', fmCreate);
FFileWriter := TWriter.Create(FStream,1024);
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
FTestFields.Feld1 := Edit1.Text;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
FTestFields.Feld2 := Edit2.Text;
end;
procedure TForm1.Edit3Change(Sender: TObject);
begin
FTestFields.Feld3 := Edit3.Text;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FFileWriter.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//Erzeugen des Streams zum Lesen
FReader := TFileStream.Create('
TestFile.def', fmOpenRead, fmShareDenyWrite);
//Erzeugen des Filereader Objektes vom Typ TReader
FileReader := TReader.Create(FReader, 1024);
//Lesen der Daten
FTestFields.Feld1 := FileReader.ReadString;
FTestFields.Feld2 := FileReader.ReadString;
FTestFields.Feld3 := FileReader.ReadString;
FileReader.Free;
//Zunächst Reader freigeben und so Datei schließen
CreateFileForWrite;
//Nun kann die Datei zum Schreiben geöffnet werden.
//Überprüfen, ob richtig gelesen
Memo.Lines.Add('
Feld 1 ---> '+FTestFields.Feld1);
Memo.Lines.Add('
Feld 2 ---> '+FTestFields.Feld2);
Memo.Lines.Add('
Feld 3 ---> '+FTestFields.Feld3);
end;
procedure TForm1.CreateWnd;
begin
inherited;
//CreateFileForWrite;
//Diese Methode wird VOR FormCreate aufgerufen. Damit wird die Datei von anderem Prozess
//verwendet, ich erhalte eine EFOpenError Exception. Deshalb in FormCreate verlegt.
end;
end.