![]() |
Funktionsparameter vorwärts abarbeiten
Hallo,
ich habe hier ein hoffentlich nicht unlösbares Problem. Im Hauptprogrammblock habe ich Funktionen die Funktionen aufrufen. Ich hbe entdeckt, daß eigendlich alle Parameter von rechts nach links abgearbeitet werden. Die Ausgabe verdeutlicht dies. PS: Das Programm ist zwar mit Lazarus geschrieben worden, wirkt sich jedoch nur auf den USES Teil aus.
Delphi-Quellcode:
program project1;
{$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { add your units here }; type THTMLTag = record level: longint; end; var HTMLTag: THTMLTag; procedure inc_taglevel; begin inc(HTMLTag.level); //writeln('Taglevel: ', HTMLTag.level); end; procedure dec_taglevel; begin dec(HTMLTag.level); //writeln('Taglevel: ', HTMLTag.level); end; procedure test_parameter(args: array of const); var I : longint; begin exit; end; procedure HTML_Init; begin HTMLTag.level:=0; end; procedure HTML_Start(tag: array of const); begin test_parameter(tag); writeln('HTML_Start'); inc_taglevel; end; function HTML_Table_Start(tag: array of const): integer; begin test_parameter(tag); writeln('HTML_Table_Start'); inc_taglevel; end; function HTML_Table_Ende:integer; begin dec_taglevel; writeln('HTML_Table_Ende'); end; function HTML_Table_Row_Start(tag: array of const): integer; begin test_parameter(tag); writeln('HTML_Table_Row_Start'); inc_taglevel; end; function HTML_Table_Row_Ende:integer; begin dec_taglevel; writeln('HTML_Table_Row_Ende'); end; begin writeln; writeln('Beginn des Tests'); writeln; HTML_Start([ HTML_Table_Start([ HTML_Table_Row_Start([ ]), HTML_Table_Row_Ende ]), HTML_Table_Ende ]); writeln; writeln('Ende des Tests'); end.
Code:
Beginn des Tests
HTML_Table_Row_Start HTML_Table_Row_Ende HTML_Table_Start HTML_Table_Ende HTML_Start Ende des Tests Ich möchte aber folgende Ausgabe erreichen;
Code:
Eben einfach so wie es im Programm steht.
Beginn des Tests
HTML_Start HTML_Table_Start HTML_Table_Row_Start HTML_Table_Row_Ende HTML_Table_Ende Ende des Tests |
Re: Funktionsparameter vorwärts abarbeiten
Nein Günter,
nicht von rechts nach links, sondern von innen nach außen werden die verschachtelten Funktionen evaluiert. Dein Konzept muss das entsprechend berücksichtigen. Grüße vom marabu |
Re: Funktionsparameter vorwärts abarbeiten
Danke,
du hast es richtig erkannt. Jedoch fällt mir eine Lösung dazu ein. |
Re: Funktionsparameter vorwärts abarbeiten
Zitat:
Die Verschachtelung macht eigentlich nur Sinn, wenn der Rückgabewert der einzelnen Funktionen der jeweils auszugebende String ist. marabu |
Re: Funktionsparameter vorwärts abarbeiten
"k" vergessen.
Das Programm basiert auf der Idee, CGI Anwendungen elegant programmieren zu können. Desweiteren soll der erzeugte HTML Code auch elegant aussehen; die Einrückungen,... . Ich bin auf der Suche nach einer "einfachen" Möglichkeit Prozeduren/Funktionen zu schachteln, die auch ein der Quelltextreichenfolge abgearbeitet werden. Die Idee stammt von PEARL. Nur die Syntax dort ist für mich ein Brechmittel, außerdem gibts da keinen Compiler. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:15 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