AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StackReturn

Ein Thema von stahli · begonnen am 26. Feb 2021 · letzter Beitrag vom 1. Mär 2021
 
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: StackReturn

  Alt 1. Mär 2021, 13:40
Statt rekursiv könntest du auch iterativ arbeiten, dann ist ein Umschalten viel einfacher, da man direkt springen kann, ohne alle Zwischenstation durchlaufen zu müssen.

Es gibt sogar ein Delphi-Referenz durchsuchenTStack<T>, was man nutzen könnte.
(oder Delphi-Referenz durchsuchenTQueue<T>, jenachdem wie rum gefüllt/verarbeitet wird ... FIFO/LIFO)
Jetzt muss ich mir das doch nochmal anschauen, aber aus einem etwas anderen Grund.

Ich will ja auch auskommentierten Text als Code interpretieren und die entsprechend auch kontextbezogen.
Das heißt, ich muss so etwas wie Branches organisieren.
Wenn ich in einen auskommentierten Block laufe, kann der irgendwann unabgeschlossen enden oder sogar ein "end." enthalten, was die Unit beenden würde.
Der hinter dem Block stehende echte Code, sieht aber ganz anders aus.

Insofern habe ich zwei völlig unterschiedliche Wege, die sich an einem bestimmten Punkt verzweigen, sich aber auf den gleichen vorherigen Kontext beziehen.

Also werde ich die verschachtelte Struktur beibehalten, aber dann mit "Iteratoren" arbeiten, die sich durch die Struktur bewegen können, und den jeweiligen Kontext beinhalten.
Das Rückspringen wird dadurch (wie Du geschrieben hast) tatsächlich einfacher und ich kann für auskommentierte Blöcke einfach eine Iteratorkopie erzeugen und sich diese bis zum Ende des auskommentierten Blockes durchwühlen lassen.
Insgesamt wird das aber schon auswendiger als der bisherige rekursive Ansatz. Nur mit dem kann ich "Abzweigungen an beliebigen Stellen" wieder schlechter umsetzen.

Ich hatte die Aufgabe zwar schon mal weitestgehend in einer verwalteten Liste umgesetzt (ohne Verschachtelungen), das war aber sehr aufwendig und hat eine Vielzahl an Sonderfällen ergeben, die zu berücksichtigen waren, so dass ich den neuen Ansatz nochmal versuchen wollte.

Mal sehen, um das jetzt mit einem Iterator besser funktioniert...

(Wie gesagt, ohne die "Kommentarbereich-Branches" könnte ich jetzt schon gut der Rekursion arbeiten.)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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