Einzelnen Beitrag anzeigen

gbl

Registriert seit: 21. Aug 2004
18 Beiträge
 
#1

Funktionsparameter vorwärts abarbeiten

  Alt 24. Sep 2006, 14:20
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.
______________________________________
cu.
Günter
  Mit Zitat antworten Zitat