Einzelnen Beitrag anzeigen

dummer_info_schüler

Registriert seit: 28. Mär 2004
Ort: Cottbus
26 Beiträge
 
#1

pointer auf falscher addresse?

  Alt 4. Apr 2004, 15:15
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!
  Mit Zitat antworten Zitat