var zliste : tzeiger;
procedure TForm1.FormActivate(Sender: TObject);
begin
laden (zliste);
end;
procedure laden (
var zladen : tzeiger);
var datensatz : tinhalt;
anz : integer;
zaktuell : tzeiger;
begin
assignfile (datei, '
C:\...\anmeldung.txt');
{$I-}
reset (datei);
{$I+}
if ioresult <> 0
then begin
form1.checklistbox2.items.add ('
Keine Datei vorhanden');
rewrite (datei)
end
else begin
form1.checklistbox2.clear;
while not eof (datei)
do begin
read (datei, datensatz);
anfuegen (datensatz, zladen);
form1.checklistbox2.items.add (datensatz.vor + '
' + datensatz.nach + '
' +
datensatz.kurs + '
' + datensatz.lehrer + '
' + datensatz.zeit + '
'
+ datensatz.datum + '
' + inttostr (datensatz.counter));
end;
{Überprüfen ob überhaupt Datensätze in der Datei stehen}
anz := 0;
zaktuell := zliste;
while zaktuell <>
nil do begin
inc (anz);
zaktuell := zaktuell^.znaechster;
end;
IF anz < 1
THEN
form1.checklistbox2.items.add('
Datei existiert zwar, aber keine Datensätze vorhanden');
end;
closefile (datei);
end;
procedure TForm1.Button1Click(Sender: TObject);
var daten : tinhalt;
begin
if (form1.edit1.text = '
')
or (form1.edit2.text = '
')
or (form1.edit3.text = '
')
or (form1.edit4.text = '
')
then form2.visible := true
else begin
daten.vor := edit1.text;
daten.nach := edit2.text;
daten.kurs := edit3.text;
daten.lehrer := edit4.text;
daten.zeit := uhrzeit;
daten.datum := dat;
daten.counter := 1;
anfuegen (daten, zliste);
speichern (zliste);
laden (zliste);
form1.close;
end;
end;
function markiert : boolean;
var zaktuell : tzeiger;
j, anzahl : integer;
begin
markiert := false;
anzahl := 0;
zaktuell := zliste;
while zaktuell <>
nil do begin
inc(anzahl);
zaktuell := zaktuell^.znaechster;
end;
FOR j:=0
TO anzahl-1
do
IF form1.checklistbox2.selected[j]
THEN markiert:=TRUE;
end;
procedure TForm1.Button6Click(Sender: TObject);
var anz, i,
index, f, hilf : integer;
zaktuell, zaktueller : tzeiger;
daten : tinhalt;
begin
IF markiert
THEN begin
anz := -1;
zaktuell := zliste;
while zaktuell <>
nil do begin
inc (anz);
zaktuell := zaktuell^.znaechster;
end;
index := 0;
for i := 0
to anz
do
if checklistbox2.checked[i]
then index := i;
zaktueller := zliste;
for f := 0
to anz
do
if f =
index then begin
daten.vor := zaktueller^.inhalt.vor;
daten.nach := zaktueller^.inhalt.nach;
daten.kurs := zaktueller^.inhalt.kurs;
daten.lehrer := zaktueller^.inhalt.lehrer;
daten.zeit := uhrzeit;
daten.datum := dat;
hilf := zaktueller^.inhalt.counter;
daten.counter := count (hilf);
anfuegen (daten, zliste);
loeschen (zaktueller, zliste);
speichern (zliste);
laden (zliste);
end else
zaktueller := zaktueller^.znaechster;
form1.close;
end
else form3.visible:=true;
{Wenn kein Häkchen makiert ist}
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form4.visible:=true;
end;
---------------------
unit zeigermodul;
interface
type tzeiger = ^telement;
tinhalt =
record
vor,nach,kurs,lehrer,zeit,datum : shortstring;
counter : integer
end;
telement =
record
inhalt : tinhalt;
znaechster : tzeiger;
end;
tdatei =
file of tinhalt;
var datei : tdatei;
procedure anfuegen (datensatz : tinhalt;
var zanfuegen : tzeiger);
var zneu, zaktuell : tzeiger;
begin
new (zneu);
zneu^.inhalt.vor := datensatz.vor;
zneu^.inhalt.nach := datensatz.nach;
zneu^.inhalt.kurs := datensatz.kurs;
zneu^.inhalt.lehrer := datensatz.lehrer;
zneu^.inhalt.zeit := datensatz.zeit;
zneu^.inhalt.datum := datensatz.datum;
zneu^.inhalt.counter := datensatz.counter;
zneu^.znaechster :=
nil;
if zanfuegen =
nil then
zanfuegen := zneu
else begin
zaktuell := zanfuegen;
while zaktuell^.znaechster <>
nil do
zaktuell := zaktuell^.znaechster;
zaktuell^.znaechster := zneu;
end;
end;
procedure speichern (
var zspeichern : tzeiger);
var
zaktuell : tzeiger;
begin
assignfile (datei, '
C:\...\anmeldung.txt');
zaktuell := zspeichern;
{$I-}
reset (datei);
{$I+}
if ioresult <> 0
then
rewrite (datei)
else
while zaktuell <>
nil do begin
write (datei, zaktuell^.inhalt);
zaktuell := zaktuell^.znaechster
end;
closefile (datei);
end;
procedure loeschen (zknoten : tzeiger;
var zloeschen : tzeiger);
var zvorgaenger : tzeiger;
begin
if zloeschen <>
nil then begin
if zknoten = zloeschen
then
zloeschen := zknoten^.znaechster
else begin
zvorgaenger := zloeschen;
while zvorgaenger^.znaechster <> zknoten
do
zvorgaenger := zvorgaenger^.znaechster;
zvorgaenger^.znaechster := zknoten^.znaechster;
end;
dispose (zknoten);
end;
end;
end.