var
benutzermax: Word = 1;
// Arrygröße-Max. Anz. d. Benutzer
type
TBenutzer =
record // Typ der Struckturvariable
Benutzername:
string[255];
Kennwort:
string[255];
Kennworthinweis:
string[255];
Vorname:
string[255];
ZVorname:
string[255];
Nachname:
string[255];
Geschlaecht: boolean;
Geborenam:
string[255];
Geborenin:
string[255];
Straße:
string[255];
PLZ:
string[255];
Ort:
string[255];
Festnetz:
string[255];
Mobil:
string[255];
Email:
string[255];
Internetseite:
string[255];
Kontakthinweis:
string[255];
end;
var
benutzer:
array of TBenutzer;
// dyn. Datenhaltung
puffer:
array of TBenutzer;
// dto. zum zw.speichern
index: Word = 0;
// akt. Feldindex beginnt mit 0
f: TFileStream;
// persistente Datenhaltung
pfad:
string;
procedure TForm2.DS_Benutzer_Speichern;
begin
benutzer[
index].Benutzername := Edit6.Text;
benutzer[
index].Kennwort := Edit7.Text;
benutzer[
index].Vorname := Edit1.Text;
benutzer[
index].ZVorname := Edit2.Text;
benutzer[
index].Nachname := Edit3.Text;
benutzer[
index].Geborenam := Edit4.Text;
benutzer[
index].Geborenin := Edit5.Text;
benutzer[
index].Kennworthinweis := Edit8.Text;
benutzer[
index].Straße := Edit12.Text;
benutzer[
index].PLZ := Edit9.Text;
benutzer[
index].Ort := Edit11.Text;
benutzer[
index].Festnetz := Edit10.Text;
benutzer[
index].Mobil := Edit13.Text;
benutzer[
index].Email := Edit16.Text;
benutzer[
index].Internetseite := Edit14.Text;
benutzer[
index].Kontakthinweis := Edit15.Text;
end;
procedure TForm2.DS_Benutzer_Anzeigen;
begin
Edit6.Text := benutzer[
index].Benutzername;
Edit7.Text := benutzer[
index].Kennwort;
Edit1.Text := benutzer[
index].Vorname;
Edit2.Text := benutzer[
index].ZVorname;
Edit3.Text := benutzer[
index].Nachname;
Edit4.Text := benutzer[
index].Geborenam;
Edit5.Text := benutzer[
index].Geborenin;
Edit8.Text := benutzer[
index].Kennworthinweis;
Edit12.Text := benutzer[
index].Straße;
Edit9.Text := benutzer[
index].PLZ;
Edit11.Text := benutzer[
index].Ort;
Edit10.Text := benutzer[
index].Festnetz;
Edit13.Text := benutzer[
index].Mobil;
Edit16.Text := benutzer[
index].Email;
Edit14.Text := benutzer[
index].Internetseite;
Edit15.Text := benutzer[
index].Kontakthinweis;
end;
procedure TForm2.FormClose(Sender: TObject;
var Action: TCloseAction);
var
i: Integer;
begin
i := Application.MessageBox('
Soll die Änderungen gespeichert werden?',
'
Frage', 36);
if i = 6
then // Ja-Button gedrückt
begin
DS_Benutzer_Speichern;
// aktuellen Datensatz sichern
if Button8.Enabled
then
Button8Click(Self)
else
Button9Click(Self)
end;
benutzer :=
nil;
puffer :=
nil
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
SetLength(benutzer, benutzermax);
// Array mit einem Feld wird angelegt
DS_Benutzer_Anzeigen;
pfad := ExtractFilePath(ParamStr(0)) + '
Benutzer';
// einen Standard-Dateinamen zuweisen
Caption := pfad;
DS_Benutzer_Anzeigen;
// ersten Datensatz anzeigen
Button8.Enabled := False;
// Datei existiert noch nicht
SaveDialog1.Options := [OFOverwritePrompt];
// Warnung vor Überschreiben
SaveDialog1.FileName := pfad
end;
procedure TForm2.Button2Click(Sender: TObject);
// DS löschen
var
i: Word;
j: Integer;
begin
if benutzermax = 1
then
Application.MessageBox('
Der letzte Datensatz kann nicht gelöscht werden!',
'
Problem', 0)
else if MessageDlg('
Wollen Sie den Datensatz wirkliche löschen?', mtWarning,
[mbYes, mbNo], 0) = mrYes
then
begin
SetLength(puffer, benutzermax - 1);
j := -1;
for i := 0
to benutzermax - 1
do
if i <>
index then
begin
Inc(j);
puffer[j] := benutzer[i];
end;
Dec(benutzermax);
for i := 0
to benutzermax - 1
do
benutzer[i] := puffer[i];
// zurück kopieren
benutzer := Copy(benutzer, 0, benutzermax);
// letzten DS abschneiden
if index > 0
then
Dec(
index);
DS_Benutzer_Anzeigen;
end;
end;
.
.
.
procedure TForm2.Button1Click(Sender: TObject);
// neuer DS
var
i, j: Integer;
begin
DS_Benutzer_Speichern;
SetLength(puffer, benutzermax + 1);
j := -1;
for i := 0
to benutzermax - 1
do
begin
Inc(j);
puffer[j] := benutzer[i];
if i =
index then
Inc(j)
// hier wird der neue DS eingefügt
end;
Inc(benutzermax);
SetLength(benutzer, benutzermax);
for i := 0
to benutzermax - 1
do
benutzer[i] := puffer[i];
// zurück kopieren
if index < benutzermax - 1
then
Inc(
index);
DS_Benutzer_Anzeigen;
end;
.
.
.
procedure TForm2.Button7Click(Sender: TObject);
// öffnen
var
i: Word;
begin
if OpenDialog1.Execute
then
begin
pfad := OpenDialog1.FileName;
try
f := TFileStream.Create(pfad, fmOpenRead)
except MessageBeep(0);
Application.MessageBox('
Die Datei konnte nicht geöffnet werden!',
'
Fehler', 52);
Exit
end;
f.ReadBuffer(benutzermax, SizeOf(Word));
SetLength(benutzer, benutzermax);
for i := benutzermax - 1
downto 0
do
f.ReadBuffer(benutzer[i], SizeOf(TBenutzer));
// alle Datensätze einlesen
index := 0;
DS_Benutzer_Anzeigen;
// ersten Datensatz anzeigen
Form3.Caption := pfad;
// Anzeige Dateipfad in Titelleiste des Formulars
Button8.Enabled := True;
// freigeben zum Speichern
f.Free
end
end;
procedure TForm2.Button8Click(Sender: TObject);
// speichern
var
i: Integer;
begin
try
f := TFileStream.Create(pfad, fmOpenWrite)
except ShowMessage
('
Fehler beim Speichern von ' + pfad);
Exit
end;
f.WriteBuffer(benutzermax, SizeOf(Word));
for i := benutzermax - 1
downto 0
do
f.WriteBuffer(benutzer[i], SizeOf(TBenutzer));
f.Free
end;
procedure TForm2.Button9Click(Sender: TObject);
// speichern unter
begin
if SaveDialog1.Execute
then
begin
pfad := SaveDialog1.FileName;
try
f := TFileStream.Create(pfad, fmCreate)
except ShowMessage
('
Fehler beim Erzeugen der neuen Datei!');
Exit
end;
f.Free;
Button8Click(Self);
// zum Menüpunkt: Datei speichern
Caption := pfad;
Button8.Enabled := True
end
end;