Delphi-PRAXiS
Seite 2 von 7     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Zeigern (https://www.delphipraxis.net/109409-problem-mit-zeigern.html)

mkinzler 29. Feb 2008 20:04

Re: Problem mit Zeigern
 
Und zKopf ist dann die Wurzel?

Delphi-Quellcode:
PROCEDURE push(zkopf:tzeiger;inhalt:char;i:byte);
VAR zneu:tzeiger;
BEGIN
    //Ermittle letztes Element
    while zhilf^.next<>NIL do
        zkopf := zkopf^.Next;
    new(zneu);
    zneu^.inhalt:=inhalt;
    zneu^.next:=NIL;
    zkopf^.next:=zneu;
END;

praesident 29. Feb 2008 20:06

Re: Problem mit Zeigern
 
Zitat:

Zitat von Macci
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;

da kommt bei mir hier:

Delphi-Quellcode:
WHILE NOT (zhilf^.next=NIL) DO zhilf:=zhilf^.next;
auch ein fehler

SirThornberry 29. Feb 2008 20:08

Re: Problem mit Zeigern
 
garantiert der gleiche weil zu dem Zeitpunkt schon wieder versucht wird einen Zeiger zu derefernzieren der nil ist (hab ich oben bereits geschrieben).

Macci 29. Feb 2008 20:08

Re: Problem mit Zeigern
 
Komisch... gib doch bitte mal die Definiton von TZeiger

DeddyH 29. Feb 2008 20:09

Re: Problem mit Zeigern
 
Delphi-Quellcode:
WHILE (zhilf <> nil) and (zhilf^.next <> NIL) DO zhilf:=zhilf^.next;

SirThornberry 29. Feb 2008 20:10

Re: Problem mit Zeigern
 
er übergibt der Funktion Push bereits nil

DeddyH 29. Feb 2008 20:12

Re: Problem mit Zeigern
 
Dann kann das nix werden, außer dass der Fehler dann später kommt.

3_of_8 29. Feb 2008 20:12

Re: Problem mit Zeigern
 
Dein Code ist wirklich nicht sonderlich gut. In Pascal kann man sowas schreiben, aber Delphi hat ganz andere Konventionen.

Aber abgesehen von den Konventionen: Warum gehst du immer bis zum Ende hindurch? Wenn das ein Stack ist, könntest du auch einfach dein neues Element ganz vorne hinsetzen. Dann könntest du in konstanter Zeit pushen und poppen.

Außerdem, warum machst du das nicht gleich in einer Klasse?

praesident 29. Feb 2008 20:14

Re: Problem mit Zeigern
 
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
WHILE (zhilf <> nil) and (zhilf^.next <> NIL) DO zhilf:=zhilf^.next;

wenn ich die Zeile eingebe, hängts hier

Delphi-Quellcode:
  zhilf^.next:=zneu;
hier die deklaration:

Delphi-Quellcode:
TYPE tzahl=char;
     tinhalt=tzahl;
     tzeiger=^tknoten;
     tknoten= RECORD
               inhalt: tinhalt;
               next:tzeiger;
               END;

VAR zliste,zkopf :tzeiger;

DeddyH 29. Feb 2008 20:16

Re: Problem mit Zeigern
 
Wenn Du nil an die Funktion übergibst, kommt der Fehler eben an der besagten Stelle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 Uhr.
Seite 2 von 7     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz