![]() |
Problem mit Zeigern
Hallo,
ich habe in der Schule beim Umstieg von Pascal auf Delphi ein Problem. Und zwar bekomme ich beim Arbeiten mit Zeigern ständig einen Exeption Fehler angezeugt. Hier der problematische Programmteil:
Delphi-Quellcode:
wenn ich einen Wert eingebe, bleibt er jedesmal bei zhilf^.next:=NIL; stehen. nehm ich die zeile raus, weiter unten.
PROCEDURE push(VAR zkopf:tzeiger;inhalt:char;i:byte);
VAR zhilf,zneu:tzeiger; BEGIN zhilf:=zkopf; zhilf^.next:=NIL; IF NOT(i=1) THEN BEGIN REPEAT zhilf:=zhilf^.next; UNTIL zhilf^.next=NIL; END; new(zneu); zneu^.inhalt:=inhalt; zhilf^.next:=zneu; zneu^.next:=NIL; END; bei Pascal hatte ich das Problem nicht. Woran liegt das? Ich komm wirklich nicht mehr weiter Danke für eure Hilfe. mfg de präsi |
DP-Maintenance
Dieses Thema wurde von "Dax" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Object-Pascal / Delphi-Language" verschoben.
|
Re: Problem mit Zeigern
wie rufst du die funktion auf und warum übergibst du zkopf als var parameter wenn du in der Funktion den Wert gar nicht neu setzt?
|
Re: Problem mit Zeigern
Zitat:
|
Re: Problem mit Zeigern
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Delphi-Quellcode:
"i" übernehme ich, weil die Funktion, die prüfen sollte, ob zkopf auf NIL zeigt auch diesen exeption fehler erzeugt hatte
init(zkopf);
laeng:=length(edit1.Text); FOR i:=1 TO laeng DO BEGIN push(zkopf,edit1.text[i],i); END; ja, das mit dem VAR parameter wurde uns glaub ich von meinem info lehrer so gesagt...scheint aber wirklich überflüssig zu sein danke PS: ich hab den Fehler nochmal als anhang hochgeladen |
Re: Problem mit Zeigern
Was soll den die Funktion genau machen?
|
Re: Problem mit Zeigern
anhand des Fehlers sag ich mal das "zkopf" nil ist. Und damit krachts natürlich beim zugriff auf next.
Anhand dessen was du bisher gepostet hast empfehle ich dir das Video Pointerfun ( ![]() |
Re: Problem mit Zeigern
Zitat:
dazu soll das eingabefeld ausgelesen werden und jedes zeichen einzeln in einen stack (die liste) geschrieben werden... danach wird gerechnet... |
Re: Problem mit Zeigern
Nochmal:
Delphi-Quellcode:
zhilf^.next:=NIL; //Nachfolger ist nil
IF NOT(i=1) THEN BEGIN REPEAT zhilf:=zhilf^.next; //jetzt ist auch zhilf nil UNTIL zhilf^.next=NIL; //next von nil^? |
Re: Problem mit Zeigern
Warum nicht einfach so?
Delphi-Quellcode:
PROCEDURE push(VAR zkopf:tzeiger;inhalt:char);
VAR zhilf,zneu:tzeiger; BEGIN zhilf:=zkopf; WHILE NOT (zhilf^.next=NIL) DO zhilf:=zhilf^.next; new(zneu); zneu^.inhalt:=inhalt; zhilf^.next:=zneu; zneu^.next:=NIL; END; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 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