Also es gibt eine Methode die ich oft anwende sind übergreifende Units, 1. behält man die übersicht und 2. findet man schneller Fehler. Hier mal, wie ich das Prob. lösen würde.
1.
Unit
Delphi-Quellcode:
unit variablen;
interface
uses controls;
type TKontakt =
record
Name :
string[255];
Vorname :
string[255];
Geburtstag : TDate;
end;
TZeiger = ^TInhalt;
TInhalt =
record
Inhalt : TKontakt;
Next : TZeiger;
Prev : TZeiger;
end;
var z_akt, z_akt2, z_kopf, z_ende : TZeiger;
v_dat :
FILE OF TKontakt;
VCard : TKontakt;
implementation
end.
2.
Unit
Delphi-Quellcode:
unit prozeduren;
interface
uses variablen;
procedure p_laden;
procedure p_uebernehmen(kontakt : TKontakt);
procedure p_speichern;
implementation
uses haupt;
procedure p_laden;
begin
AssignFile(v_dat, ExtractFilePath(Application.ExeName) + '
daten.lst');
Reset(v_dat);
WHILE NOT EOF(v_dat)
DO
BEGIN
IF z_akt =
NIL THEN
BEGIN
New(z_akt);
Read(v_dat,z_akt^.Inhalt);
z_kopf := z_akt;
z_ende := z_akt;
z_akt^.Prev :=
NIL;
z_akt^.Next :=
NIL;
END
ELSE
BEGIN
new(z_akt2);
z_akt^.Next := z_akt2;
z_akt^.Next^.Prev := z_akt;
z_akt := z_akt2;
Read(v_dat,z_akt^.Inhalt);
z_ende := z_akt;
z_akt^.Next :=
NIL;
END;
END;
z_akt := z_kopf;
end;
procedure p_uebernehmen;
begin
IF ueberschreiben
THEN
BEGIN
z_akt^.Inhalt := kontakt;
END
ELSE
IF z_akt =
NIL THEN
BEGIN
New(z_akt);
z_akt^.Inhalt := kontakt;
z_kopf := z_akt;
z_ende := z_akt;
z_akt^.Prev :=
NIL;
z_akt^.Next :=
NIL;
END
ELSE
BEGIN
new(z_akt2);
z_akt^.Next := z_akt2;
z_akt^.Next^.Prev := z_akt;
z_akt := z_akt2;
z_akt^.Inhalt := kontakt;
z_ende := z_akt;
z_akt^.Next :=
NIL;
END;
end;
procedure p_speichern;
begin
IF z_akt <>
NIL THEN
BEGIN
z_akt := z_kopf;
AssignFile(v_dat, ExtractFilePath(Application.ExeName) + '
dateiname.endung');
Rewrite(v_dat);
WHILE z_akt^.Next <>
NIL DO
BEGIN
Write(v_dat,z_akt^.Inhalt);
z_akt := z_akt^.Next;
END;
Write(v_dat,z_akt^.Inhalt);
CloseFile(v_dat);
END;
end;
end.
Is aber nur 'n Vorschlag. Sollten noch Fragen auftreten, immer stellen.