| Autor |
Beitrag |
praesident118
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 29.02.08 18:11
Hallo,
in der Schule haben wir bis vor kurzem noch in Pascal gearbeitet. Unser letztes Thema waren dabei Listen.
Damit müssen wir nun in Delphi weiterarbeiten.
Allerdings bekomme ich immer Fehler wenn ich Zeilen in folgender Form verwende:
Delphi-Quelltext
oder
Delphi-Quelltext
zur Überprüfung, ob der Zeiger auf Nil zeigt.
Der Fehler wird allerdings erst angezeigt, wenn ich einen Wert eingebe und dieser in die Liste geschrieben werden soll.
Ich komme einfach nicht weiter.
Vielen Dank für eure Hilfe
mfg
de präsi
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 29.02.08 18:14
Kannst Du bitte deinen Code kurz im Kontext posten, da einzelne Fragmente in dieser Form nicht sehr aussagekräftig sind. Gerade dein zweites Code-Beispiel wäre in dieser Form nicht compilierbar.
Auch hilft oftmals die Angabe der Fehlermeldung 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
praesident118 
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 29.02.08 18:22
BenBE hat folgendes geschrieben: | Kannst Du bitte deinen Code kurz im Kontext posten, da einzelne Fragmente in dieser Form nicht sehr aussagekräftig sind. Gerade dein zweites Code-Beispiel wäre in dieser Form nicht compilierbar.
Auch hilft oftmals die Angabe der Fehlermeldung  |
ok, es geht um folgendes Programmstück:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| init(zkopf); laeng:=length(edit1.Text); FOR i:=1 TO laeng DO BEGIN push(zkopf,edit1.text[i],i); END; |
wir sollten eine 2. unit mit verschiedenen Funktionen schreiben, push ist ein Bestandteil dieser unit
hier die Procedur:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| PROCEDURE push(VAR zkopf:tzeiger;inhalt:char;i:byte); VAR zhilf,zneu:tzeiger;
BEGIN zhilf:=zkopf;
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; |
Ich hab schon versucht ein paar Veränderungen vorzunehmen, aber nichts hat geklappt. Die Variable "i" zu übernehmen war in Pascal auch nicht nötig. Dort hatte ich einfach überprüft, ob das Kopfelement der Liste auf NIL zeigt.
Hier noch schnell die Deklaration:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| TYPE ; tinhalt=char; tzeiger=^tknoten; tknoten= RECORD inhalt: tinhalt; next:tzeiger; END;
VAR zliste,zkopf :tzeiger; wahl:char; |
danke für eure Hilfe
Einloggen, um Attachments anzusehen!
|
|
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 29.02.08 18:29
häng doch mal dein projekt (.pas, .dpr, .dfm) dran. dann kann man mal sehen wo er meckert...
... oder du schaust mal, wo er meckert... 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 29.02.08 18:29
Im Programm-Ablauf der Routine Push prüfst Du nie, ob zhilf einen Wert ungleich nil hat. Das ist aber nötig, damit Du überhaupt erfolgreich zhilf dereferenzieren kannst (also zhilf^ einen Wert enthält.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
praesident118 
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 29.02.08 18:33
BenBE hat folgendes geschrieben: | | Im Programm-Ablauf der Routine Push prüfst Du nie, ob zhilf einen Wert ungleich nil hat. Das ist aber nötig, damit Du überhaupt erfolgreich zhilf dereferenzieren kannst (also zhilf^ einen Wert enthält. |
Könntest du mir viellt. mal die genaue Programmzeile aufschreiben, die du meinst?
In Pascal war das nicht nötig, da ist die selbe Prozedur in einem anderen Programm super gelaufen.
Daher weiß ich nicht was du genau meinst.
dankeee
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 29.02.08 18:55
Beispiel 1, Zeile 10. Dort erfolgt der erste Zugriff auf zhilf, aber keine Prüfung wie if zhilf = nil then DosomethingToInitZHilf;
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
praesident118 
Hält's aus hier
Beiträge: 7
|
Verfasst: Fr 29.02.08 19:20
BenBE hat folgendes geschrieben: | | Beispiel 1, Zeile 10. Dort erfolgt der erste Zugriff auf zhilf, aber keine Prüfung wie if zhilf = nil then DosomethingToInitZHilf; |
tut mir echt leid, aber ich versteh das nicht
kannst du mir viellt. mal einfach nur die 2 zeilen, die dafür nötig sind aufschreiben?
pascal brauchte ich sowas keineswegs und ich weiß jetzt wirklich nicht, wo wie was rein muss...
vor allem, wie soll ich die variable zhilf initialisieren?
danke, auch wenn ich mich wohl ein bisschen dämlich anstelle
|
|
|