TZeiger =^TSportler;
TSportler =
record
name :
string[50];
zeit : real;
next : TZeiger;
end;
var
Form1: TForm1;
ExDatei:
file of TSportler;
gespeichert: boolean;
Sportler, Schnellster, vor: TZeiger;
Anzahl, y: integer;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
var n: integer;
begin
vor:=
nil;
schnellster:=
nil;
gespeichert:= false;
with StringGrid1
do begin
ColCount:= 3;
RowCount:= 31;
Cells[1, 0]:= '
Name';
Cells[2, 0]:= '
Zeit';
end;
for n:= 1
to 30
do StringGrid1.Cells[0, n]:= IntToStr(n);
end;
procedure TForm1.Einfuegen1Click(Sender: TObject);
begin
form2.visible:= true;
end;
procedure TForm1.Ausgeben;
var yPos: integer;
begin
for yPos:= 1
to 30
do begin
StringGrid1.Cells[1, yPos]:= '
';
StringGrid1.Cells[2, yPos]:= '
';
end;
sportler:= schnellster;
ypos:= 1;
while sportler <>
nil do begin
StringGrid1.Cells[1, yPos]:= sportler^.
name;
StringGrid1.Cells[2, yPos]:= FloatToStr(sportler^.zeit);
sportler:= sportler^.next;
ypos:= ypos+1;
end;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer;
var CanSelect: Boolean);
begin
y:= ARow;
end;
procedure TForm1.Loeschen1Click(Sender: TObject);
var handle:
string[50];
time: real;
begin
handle:= StringGrid1.Cells[1, y];
time:= StrToFloat(StringGrid1.Cells[2, y]);
sportler:= schnellster;
while (
handle <> sportler^.
name)
and (sportler^.zeit <> time)
do begin
vor:= sportler;
sportler:= sportler^.next;
end;
vor^.next:= sportler^.next;
dispose(sportler);
ausgeben;
end;
// neues Formular
procedure TForm2.EinfuegenClick(Sender: TObject);
var neu: TZeiger;
begin
new(neu);
neu^.
name:= NameEd.Text;
neu^.zeit:= StrToFloat(ZeitEd.Text);
if schnellster =
nil
then schnellster:= neu
else begin
neu^.next:= schnellster;
schnellster:= neu;
end;
gespeichert:= false;
form1.ausgeben;
// an dieser Stelle tritt bei Betätigung dieses Knopfes ein EAccessViolation-Fehler auf
form2.visible:= false;
end;