![]() |
pointer auf falscher addresse?
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:
Der zeiger ist so definiert:
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;
Delphi-Quellcode:
Ich hab jetzt überhaupt keine Ahnung, wo der Fehler sein soll... Hat jmd. von euch ´ne Idee?
type TInfo= string[30];
zeiger= ^TElement; TElement = record info: TInfo; next: zeiger; end; Danke im Voraus! |
Re: pointer auf falscher addresse?
In welcher Zeile kommt der Fehler?
|
Re: pointer auf falscher addresse?
der grüne Pfeil zeigt dann auf die Zeile
aktualisiere_stringgrid(s); im Button1.click |
Re: pointer auf falscher addresse?
[quote="dummer_info_schüler"]
Delphi-Quellcode:
Was ist dieses l?
form1.stringgrid1.cells[0,i]:=l^.info;
l:=l^.next; until l^.next= nil; end; Den Parameter s, den du der Prozedur übergibst verwendest du gar nicht. Mit F4 kannt du übrigens in die Funktion reinsteppen, dann siehst du in welcher Zeile der Fehler genau auftritt. |
Re: pointer auf falscher addresse?
Hi dummer_info_schüler(?)
mach es einfach so:
Delphi-Quellcode:
Und zum Lesen: "Das große Buch zu Turbo Pascal 6.0", Seite 262-276, 1991 Data Becker GmbH, ISBN 3-89011-322-2.
procedure aktualisiere_stringgrid(var s: zeiger);
var i: integer; begin i:=0; Alt := S; while Alt <> nil do begin form1.stringgrid1.rowcount := i + 1; Form1.StringGrid1.Cells[0, i]:= S^.Info; Alt := S^.Next; inc(i); end; end; Gibt es auf jeden gutsortierten Trodelmarkt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz