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:
Beginn des Tests
HTML_Start
HTML_Table_Start
HTML_Table_Row_Start
HTML_Table_Row_Ende
HTML_Table_Ende
Ende des Tests
Eben einfach so wie es im Programm steht.