Hallo!
Ich habe ´ne Prozedur geschrieben, damit eine Information als Pointer sortiert eingefügt wird und dann in ´nem stringgrid die Pointer-info´s dargestellt werden. Im Quelltext sind so an sich auch keine Fehler, aber wenn ich die prozedur aufrufe, kommt die Meldung
<Project Project1.exe raised
exception class EAccessViolation with message '
Access violation at address 004040D6 in module 'Project1.exe'. Read of address 'FFFFFFFF'. Process stopped. Use Stop or Run to continue.>
Delphi-Quellcode:
procedure einfuegen (var name: TInfo; var s: zeiger);
var alt, neu, basis: zeiger;
begin
basis:=s;
alt:=nil;
while (s <> nil) and (s^.info < name) do begin
alt:=s;
s:=s^.next;
end;
new(neu);
neu^.info:=name;
if alt= nil then begin
neu^.next:=s;
s:=neu;
end else begin
alt^.next:=neu;
neu^.next:=s;
if (basis <> nil) then s:=basis;
end;
end;
procedure aktualisiere_stringgrid(var s: zeiger);
var i: integer;
begin
i:=0;
repeat
inc(i);
form1.stringgrid1.rowcount:=i+1;
form1.stringgrid1.cells[0,i]:=l^.info;
l:=l^.next;
until l^.next= nil;
end;
procedure TForm1.Button1Click(Sender: TObject);
var name: string[30];
begin
name:=inputbox('Einfügen','Was soll eingefügt werden?','');
einfuegen(name,s);
aktualisiere_stringgrid(s);
end;
Der zeiger ist so definiert:
Delphi-Quellcode:
type TInfo= string[30];
zeiger= ^TElement;
TElement = record
info: TInfo;
next: zeiger;
end;
Ich hab jetzt überhaupt keine Ahnung, wo der Fehler sein soll... Hat jmd. von euch ´ne Idee?
Danke im Voraus!