unit Vokabeln;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Label1: TLabel;
EditEintragen: TEdit;
EditEntfernen: TEdit;
ListBoxAnzeige: TListBox;
ButtonSpeichern: TButton;
ButtonLaden: TButton;
ButtonBeenden: TButton;
ButtonEintragen: TButton;
ButtonEntfernen: TButton;
ButtonAnzeigen: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
ButtonLeeren: TButton;
procedure ButtonBeendenClick(Sender: TObject);
procedure ButtonEintragenClick(Sender: TObject);
procedure ButtonEntfernenClick(Sender: TObject);
procedure ButtonSpeichernClick(Sender: TObject);
procedure ButtonLadenClick(Sender: TObject);
procedure ButtonAnzeigenClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure EditEintragenKeyPress(Sender: TObject;
var Key: Char);
procedure ButtonLeerenClick(Sender: TObject);
end;
Zeiger = ^Element;
//Definition eines Zeigertyps
tInhalt =
string[15];
Element =
record
naechster: Zeiger;
Inhalt: tInhalt;
end;
const Datenpfad='
Vokabeln.dta';
//Hier wird die Datenbank gespeichert
var
Form1: TForm1;
Wurzel, z : Zeiger;
//nötig um Liste aufzubauen
f:
file of tInhalt;
//nötig für Speicher-/Ladevorgang
function Kontrolle:Boolean;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
//Bei Programm-Start
begin
EditEintragen.SetFocus;
//Fokus auf Eintragen-Textfeld setzen
Wurzel:=nil;
//Wurzel markiert erstes greifbares Element und wird zunächst "geerdet"
end;
function Kontrolle;
//Test auf gängigste IO-Fehler
begin
result := false;
case IOResult
of
0: result := true;
2:
begin showmessage ('
Datei nicht vorhanden.' +#13+ '
Datei wird angelegt');
rewrite(f);
result := true;
end;
3: showmessage ('
Ungueltiger Dateiname/Pfad');
5: showmessage ('
Dateizugriff verweigert.');
21: showmessage ('
Laufwerk nicht bereit!');
end;
end;
procedure TForm1.EditEintragenKeyPress(Sender: TObject;
var Key: Char);
//Eintragen über Enter Taste
begin
if (Key=#13)
and (length(EditEintragen.Text)<>0)
then
begin
ButtonEintragenClick(Sender);
//Wenn "Enter" gedrückt wird dann eintragen...
ButtonAnzeigenClick(Sender);
//... und anzeigen
EditEintragen.SetFocus;
//Fokus auf Textfeld setzen
end;
end;
procedure TForm1.ButtonEintragenClick(Sender: TObject);
//Vokabeln eintragen
begin
if length(EditEintragen.Text)<>0
then //Wenn Textfeld nicht leer ist
begin
New(z);
//Erzeugen eines neuen Listenelements
z^.Inhalt:= EditEintragen.Text;
//Record wird befüllt
z^.naechster:=Wurzel;
//Zeiger "naechster" wird bisheriger Wurzelwert zugewiesen
Wurzel:=z;
//Zeiger Wurzel wird auf z "verbogen"
EditEintragen.Text:='
';
//Textfeld wieder leeren
ButtonAnzeigenClick(Sender);
//neue Liste anzeigen
EditEintragen.SetFocus;
//Fokus auf Textfeld setzen
end;
end;
procedure TForm1.ButtonAnzeigenClick(Sender: TObject);
begin
ListBoxAnzeige.Items.Clear;
//Listbox wird zunächst geleert...
z:=Wurzel;
while z<>
nil do //...und mit neuer Liste befüllt
begin
ListBoxAnzeige.Items.Add(z^.Inhalt);
z:=z^.naechster;
end;
end;
procedure TForm1.ButtonLeerenClick(Sender: TObject);
//Listbox wird geleert
begin
ListBoxAnzeige.Items.Clear;
end;
procedure TForm1.ButtonEntfernenClick(Sender: TObject);
begin
//Vokabeln entfernen
end;
procedure TForm1.ButtonSpeichernClick(Sender: TObject);
//Vokabeldatenbank speichern
var i:integer;
begin
Assignfile (f,Datenpfad);
{$I-} reset (f);
{$I+}
if Kontrolle
then
begin
while z<>
nil do
begin
write (f, z^.Inhalt);
z:=z^.naechster;
end;
closefile (f);
showmessage('
Vokabel-Verzeichnis erfolgreich gespeichert');
//Erfolgsmeldung ausgeben
end;
end;
procedure TForm1.ButtonLadenClick(Sender: TObject);
//Vokabeldatenbank laden
var i:integer;
begin
i:=1;
Assignfile (f,Datenpfad);
{$I-} reset(f);
{$I+}
if Kontrolle
then
begin
while not eof(f)
do //Auslesen bis Ende der Datei erreicht wird
begin
read(f, z^.Inhalt);
z:=z^.naechster;
end;
end;
closefile (f);
showmessage('
Datenbank erfolgreich geladen');
//Erfolgsmeldung ausgeben
end;
procedure TForm1.ButtonBeendenClick(Sender: TObject);
//Programm beenden
begin
close;
end;
end.