AGB  ·  Datenschutz  ·  Impressum  







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

Funktionsparameter vorwärts abarbeiten

Ein Thema von gbl · begonnen am 24. Sep 2006 · letzter Beitrag vom 24. Sep 2006
 
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
 


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 07:22 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