AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Suchfunktion Ergebnis der Suchanfrage

Ergebnis der Suchanfrage


Datum des Suchindex: Heute, 09:17

Parameter dieser Suchanfrage:

Suche in Thema: Problem mit Zeigern
Suche alle Beiträge, die von "Macci" geschrieben wurden
• Suchmethode: "Suche nach allen Begriffen"
• Nach Datum (firstpost) sortiert
• Zeige Treffer als Beiträge
Zeige 16 von insges. 16 Treffern
Suche benötigte 0.003s

Es liegen Ergebnisse in folgenden Bereichen vor:

  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 1. Mär 2008
    In welcher Klasse bist du denn?
    Naja vielleicht hilft dir mein Code ja trotzdem ein bisschen, wenn du irgndwo nicht weiter weist ;-)
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 1. Mär 2008
    Hatte grad nix besseres zu tun, also hab ich dir mal so ein Ding programmiert ;-)
    Kannst du gerne so oder abgeändert verwenden.

    Viel Spass damit :-D
    Macci
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 1. Mär 2008
    Hab das jetzt mal für dich gemacht.

    Hier der interface-Teil:

    type
    TExpression = class
    public
    function eval:Extended; virtual; abstract;
    end;
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 1. Mär 2008
    Wieso verwendest du dann überhaupt "char" ? Ich würde an deiner Stelle eine eigene Klasse, z.B. TExpression mit der abstrakten Funktion eval() als Nachfahre von TObject anlegen. Und die Nachfahren dieser Klasse sind dann TZahl, TAdd, TSub, TMul und TDiv (ggf. noch weitere Rechenoperationen).

    Dann verwendest du statt char einfach TExpression und du kannst wunderbar damit arbeiten.

    PS:...
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 1. Mär 2008
    Also Freigeben ist das Gegenteil von Reserverien (was du z.B. mit "new(zhilf)" machst). Wenn du das Element aus dem Keller holst, ist es nicht nötig, selbiges Element noch weiter im Speicher zu behalten. Deswegen gibt man diesen Speicher dann mit Dispose frei. Würde man auf dieses Freigeben verzichten, würde das Programm zwar trotzdem ganz normal funktionieren aber unter Umständen Unmengen an...
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 1. Mär 2008
    @praesident:

    Zeig doch bitte mal den restlichen Quelltext, wo du die Push und Pop Methoden verwendest. Würde mich persönlich mal interessieren. Freut mich natürlich, dass es klappt ;-)

    @alzaimar:
    Joa genau so isses. Ich hoffe du kannst mir verzeihen, dass ich diesen Code nur schnell schnell hingerotzt hab und an das Freigeben des Speichers zunächst gar nicht dachte. War halt schon spät. ...
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 1. Mär 2008
    Dann versuchst du einmal irgendwo von einem leeren Stack zu poppen. Das geht natürlich nicht ;-)
    Zeig doch mal den restlichen Code.

    Mir fällt grade auf: Etwas sauberer wäre es natürlich, bei der POP-Funktion mit Dispose den verwendeten Speicher freizugeben.

    edit: Also so:

    FUNCTION pop(VAR zkopf:tzeiger):char;
    var zhilf:tzeiger;
    BEGIN
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 1. Mär 2008
    Joa, dann benutze sowohl meine PUSH als auch meine POP Funktion.

    Hier nochmal:
    PROCEDURE push(VAR zkopf:tzeiger;inhalt:Char);
    var zhilf:tzeiger;
    BEGIN
    new(zhilf);
    zhilf^.inhalt:=inhalt;
    zhilf^.next:=zkopf;
    zkopf:=zhilf
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 29. Feb 2008
    Wenn du bei meiner Funktion
    push a
    push b
    push c

    machst, und darauf hin 3 pop's folgen, liefern diese in dieser Reihenfolge: c b a (!)
    Also immer das LETZTE Element wird ZUERST entfernt.

    Genau das erwartet man von einem Keller auch.
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 29. Feb 2008
    Der Sinn eines Kellers ist es ja gerade, möglichst schnell den Kram reinschmeissen zu können (Aufwand O(1)) und möglichst schnell an des LETZTE eingelagerte Element dranzukommen (Aufwand O(1)).

    Diese beide Punkte würdest du zunichte machen, wenn du immer absichtlich den Keller bis zum Ende hin durchforstest (jeweils Aufwand O(n)). Kannst du deinem Lehrer auch so sagen ;-)
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 29. Feb 2008
    Schau mal, so klappts:

    PROCEDURE push(VAR zkopf:tzeiger;inhalt:Char);
    var zhilf:tzeiger;
    BEGIN
    new(zhilf);
    zhilf^.inhalt:=inhalt;
    zhilf^.next:=zkopf;
    zkopf:=zhilf
    END;
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 29. Feb 2008
    Achso, nein würde es nicht, weil du ja keine FIFO-Schlage sondern einen LIFO-Keller willst. Sorry ;-)

    Allerdings würde mein Vorschlag passen, wenn du für das Push auch eine entsprechende Prozedur verwenden würdest, die das neue Element am Anfang einfügt, die übrigens viel einfacher wäre.
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 29. Feb 2008
    Würde statt

    FUNCTION pop(VAR zkopf:tzeiger):char;
    VAR zhilf1,zhilf2:tzeiger;
    z:char;
    BEGIN
    zhilf1:=zkopf;
    zhilf2:=zkopf^.next;
    WHILE NOT(zhilf2^.next = NIL) DO
    BEGIN
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 29. Feb 2008
    Stimmt, daran dass zkopf schon mit nil übergeben wird, habe ich gar nicht gedacht ;-)

    @DeddyH:

    Hier
    while (zhilf <> nil) and (zhilf^.next <> nil) do
    zhilf:=zhilf^.next;


    ist die erste Abfrage (zhilf<>nil) unnötig ;-)
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 29. Feb 2008
    Komisch... gib doch bitte mal die Definiton von TZeiger
  • Forum: Object-Pascal / Delphi-Language

    Re: Problem mit Zeigern

      Delphi
      by Macci, 29. Feb 2008
    Warum nicht einfach so?

    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;


URL zu dieser Suchanfrage:

https://www.delphipraxis.net/dp_search.php?do=usersearch&search_username=Macci&search_exact_username=1&search_sortby=dateline&search_resulttype=post&search_matchmode=0&searchthreadid=109409
Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 Uhr.
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