4D v14.3

4D HTML Tags

Home

 
4D v14.3
4D HTML Tags

4D HTML Tags  


 

 

Der 4D Web Server bietet verschiedene 4D spezifische HTML Tags, um Referenzen auf 4D Variablen oder Ausdrücke in vom 4D Web Server gesendete statische HTML Seiten einzufügen, z.B. über die Befehle WEB SEND FILE und WEB SEND BLOB. Diese Seiten heißen halbdynamische Seiten.

Diese Ausdrücke werden als HTML Kommentare (<!--#Tag Inhalt--> in HTML Code) eingefügt. Die meisten HTML Editoren bieten Funktionalitäten zum Einfügen von Kommentaren.

Es gibt folgende 4D HTML Ausdrücke:

  • 4DTEXT, um 4D Variablen und Ausdrücke als Text einzufügen,
  • 4DHTML, um HTML Code einzufügen,
  • 4DSCRIPT, um eine 4D Methode auszuführen,
  • 4DINCLUDE, um eine Seite in eine andere einzufügen,
  • 4DBASE, um den Standardordner zu ändern, den das Tag 4DINCLUDE enthält,
  • 4DIF, 4DELSE, 4DELSEIF und 4DENDIF, um logische Bedingungen in den HTML Code einzufügen,
  • 4DLOOP und 4DENDLOOP, um Schleifen in den HTML Code einzufügen.

Der Inhalt von durch 4D gesendeten halbdynamischen Seiten wird analysiert, wenn die Befehle WEB SEND FILE (.htm, .html, .shtm, .shtml), WEB SEND BLOB (text/html vom Typ BLOB) oder WEB SEND TEXT aufgerufen bzw. wenn gesendete Seiten über URL aufgerufen werden. Im letzten Fall werden aus Optimierungsgründen Seiten mit den Endungen .htm und .html NICHT analysiert. Um hier das Analysieren der HTML Seiten zu erzwingen, müssen Sie die Endung .shtm oder shtml anfügen, z.B. http://www.server.com/dir/page.shtm.

Ein Beispiel dazu finden Sie in der Beschreibung zum Befehl WEB GET STATISTICS.

Der Parser arbeitet intern mit UTF-16 Strings, die zu analysierenden Daten könnten aber auch anders codiert sein. Bei Tags mit Text (z.B. 4DHTML) konvertiert 4D die Daten bei Bedarf, abhängig von Ursprung und verfügbarer Information (Charset)

Nachfolgend die Fälle, in denen 4D die Tags in den HTML Seiten analysiert, sowie alle ausgeführten Konvertierungen:

SendebedingungenAnalyse des Inhalts der gesendeten SeitenVerwendeter Zeichensatz
Endungen der Seiten (allgemein):
.htm, .html, .shtm, .shtml (HTML Seiten)X
.xml, .xsl (XML Seiten)X
.wml (WML Seiten)X
Über URLs aufgerufene SeitenX, außer Seiten mit der Endung .htm” oder .htmlVerwendung von Charset, übergeben als Parameter des "Content-Type" Header der Seite. Gibt es keinen, wird nach einem Tag META-HTTP EQUIV mit einem Charset gesucht. Andernfalls wird der standardmäßige Zeichensatz für den HTTP Server verwendet.
Aufruf des Befehls WEB SEND FILEXVerwendung von Charset, übergeben als Parameter des "Content-Type" Header der Seite. Gibt es keinen, wird nach einem Tag META-HTTP EQUIV mit einem Charset gesucht. Andernfalls wird der standardmäßige Zeichensatz für den HTTP Server verwendet.
Aufruf des Befehls WEB SEND TEXTXKeine Konvertierung erforderlich
Aufruf des Befehls WEB SEND BLOB X, wenn BLOB vom Typ "text/html" ist Verwendung von Charset, gesetzt als Parameter des "Content-Type" Header der Antwort. Andernfalls wird der standardmäßig für den HTTP Server gesetzte Zeichensatz verwendet.
Einfügen über <!--4DINCLUDE-->XVerwendung von Charset, übergeben als Parameter des "Content-Type" Header der Seite. Gibt es keinen, wird nach einem Tag META-HTTP EQUIV mit einem Charset gesucht. Andernfalls wird der standardmäßige Zeichensatz für den HTTP Server verwendet.
Aufruf des Befehls PROCESS 4D TAGSXText Daten: keine Konvertierung. BLOB Daten: Automatische Konvertierung vom Zeichensatz Mac-Roman zur Wahrung der Kompatibilität

Damit 4D einen HTML Kommentar verwerten kann, muss er die Form <!--#4D...--> haben. Beachten Sie, dass bestimmte HTML Editoren automatisch auch andere Informationen in einen Kommentar einbauen, was beim Analysieren zu falscher Interpretation führen kann.

Dagegen sind andere HTML Ausdrücke in jedem Fall möglich, wie z.B. <--#Start list-->

Endet ein Kommentar <!--#4D... nicht mit -->, wird die Meldung “<!--4D... : --> wird erwartet” eingefügt, die Analyse wird an dieser Stelle unterbrochen. Die Seite wird gesendet, um den Fehler zu melden.

Es lassen sich auch verschiedene Arten von Ausdrücken ineinander verschachteln. Hierzu ein Beispiel für eine mögliche HTML Struktur:

<HTML>
...
<BODY><!--#4DSCRIPT/PRE_PROCESS-->   (Aufruf der Methode)
<!--#4DIF (meinevar=1)-->   (If Bedingung)
   <!--#4DINCLUDE banner1.html-->   (Einfügen einer Unterseite)
<!--#4DENDIF-->   (End if)
<!--#4DIF (meinevar=2)-->
   <!--#4DINCLUDE banner2.html-->
<!--#4DENDIF-->
<!--#4DLOOP [TABLE]-->   (Schleife auf die aktuelle Auswahl)
<!--#4DIF ([TABLE]ValNum>10)-->   (If [TABELLE]WertNr>10)
   <!--#4DINCLUDE subpage.html-->   (Unterseite einfügen)
<!--#4DELSE-->   (Else)
   <B>Value: <!--#4DTEXT [TABLE]ValNum-->
   </B><BR>(Feld anzeigen)
<!--#4DENDIF-->
<!--#4DENDLOOP-->   (End for)
</BODY>
</HTML>

4DTEXT  

Syntax: <!--#4DTEXT VarName--> oder <!--#4DTEXT 4DExpression-->

Über <!--#4DTEXT VarName--> können Sie eine Referenz auf die 4D Variable oder den Ausdruck VarName beliebig auf einer HTML Seite einfügen. Schreiben Sie zum Beispiel:
<P>Welcome to <!--#4DTEXT vtSiteName-->!</P>,
wird der Wert der 4D Variablen vtSiteName in die HTML Seite eingefügt, wenn sie gesendet wird. Dieser Wert wird als einfacher Text eingefügt, spezifische HTML Zeichen wie ">" werden automatisch aufgelöst.

Über 4DTEXT können Sie auch einen 4D Ausdruck (nicht nur Variablen) in 4D HTML Kommentare einfügen. So können Sie den Inhalt eines Feldes, z.B. <!--4DTEXT [Tabellenname]Feldname-->) oder ein Tabellenelement z.B. <!--#4DTEXT arr{1}-->) oder eine Methode, die einen Wert zurückgibt (<!--#4DTEXT mymethod-->) direkt einfügen. Ein Ausdruck wird nach denselben Regeln konvertiert wie eine Variable. Ein 4D Ausdruck muss darüberhinaus auch die Syntaxregeln von 4D berücksichtigen.

Hinweis: Die Ausführung einer 4D Methode mit 4DTEXT richtet sich nach dem Wert des Attributs, das in den Methodeneigenschaften unter "Zugang per 4D HTML Tags und URLs (4DAction...)" eingestellt wurde. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.

Ein Ausdruck kann zwar direkt den Aufruf von 4D Funktionen enthalten, aus Gründen der Lokalisierung ist jedoch davon abzuraten. So interpretiert ein französisches 4D den Kommentar <!--4DTEXT Date du jour--> korrekt, ein englisches 4D bearbeitet diesen Kommentar jedoch nicht. Dasselbe gilt für die Bearbeitung von Zahlen, da der Dezimaltrenner je nach Land variieren kann. In beiden Fällen raten wir dringend, über Programmierung eine Variable zuzuweisen.

Bei einem Bewertungsfehler erscheint der eingefügte Text in Form von “<!--#4DTEXT meinevar--> : ## Fehler # Fehlercode”.

Hinweise:

  • Sie können mit Prozessvariablen arbeiten.
  • Sie können den Inhalt eines Feldes vom Typ Bild anzeigen. Dagegen lässt sich der Inhalt eines Array-Elements vom Typ Bild nicht anzeigen.
  • Da HTML eine textorientierte Anwendung ist, arbeiten Sie normalerweise mit Textvariablen. Sie können aber auch Variablen vom Typ BLOB einsetzen. Dazu genügt es, das BLOB im Modus Text without length zu generieren.
Hinweis zur Kompatibilität: Dieses spezifischere Tag ersetzt das generische Tag 4DVAR ab 4D v12.2. Das Tag 4DVAR wird noch unterstützt und funktioniert wie in früheren Versionen. Wir empfehlen jedoch, jetzt zum Einfügen von Text das Tag 4DTEXT zu verwenden.

4DHTML  

Syntax: <!--4DHTML MeineVar--> oder <!--4DHTML 4D Expression-->

Über dieses Tag können Sie eine Variable oder einen 4D Ausdruck (Feld, Array, Funktion, etc.) bewerten und in eine halbdynamische Seite einfügen. Im Gegensatz zum Tag 4DTEXT werden spezielle HTML Zeichen nicht aufgelöst. Hierzu ein Beispiel:

Wert von meinevarTagsEinfügen in die Web Seite
meinevar:="<B>"<!--#4DTEXT meinevar-->&lt;B&gt;
meinevar:="<B>"<!--#4DHTML meinevar--><B>

Bei einem Bewertungsfehler erscheint der eingefügte Text in Form von “<!--#4DHTML meinevar--> : ## Fehler # Fehlercode”.

Hinweis: Die Ausführung einer 4D Methode mit 4DHTML richtet sich nach dem Wert des Attributs, das in den Methodeneigenschaften unter "Zugang per HTML Tags und URLs (4DAction...)" eingestellt wurde. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.

Hinweis zur Kompatibilität: Dieses Tag ersetzt ab 4D Version 12.2 das Tag 4DHTMLVAR. Das Tag 4DHTMLVAR wird noch unterstützt und funktioniert wie in früheren Versionen. Wir empfehlen jedoch, zum Einfügen von HTML Code nun das Tag 4DHTML zu verwenden.

Syntax: <!--#4DSCRIPT/MeineMeth/MeinParam-->

Mit 4DSCRIPT können Sie beim Senden von statischen HTML Seiten 4D Methoden ausführen. Gibt es in einer statischen Seite <!--#4DSCRIPT/MeineMeth/MeinParam--> als HTML Kommentar, wird die Methode MeineMeth mit dem Parameter MeinParam als ein String in $1 ausgeführt. Beim Laden der HTML Seite ruft 4D – sofern vorhanden – die Datenbankmethode On Web Authentication auf. Gibt diese Wahr zurück, führt 4D die Methode aus.

Die Methode gibt in $0 Text zurück. Beginnt der String mit dem Zeichencode 1, wird er als HTML betrachtet. Dasselbe Prinzip gilt auch für Variablen.

Hinweis: Die Ausführung einer Methode mit 4DSCRIPT richtet sich nach der Option “Benutze 4DVAR Kommentare anstatt Klammern”, die im Dialogfenster Methodeneigenschaften definiert wird. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.

Der Inhalt der Seite wird analysiert, wenn der Befehl WEB SEND FILE (.htm, .html, .shtm, .shtml) oder WEB SEND BLOB (blob vom Typ Text/html) aufgerufen wird.
Beachten Sie, dass die Analyse im nicht kontextuellen Modus auch erfolgt, wenn eine URL auf eine Datei mit der Endung “.shtm” oder “.shtml” zeigt, zum Beispiel http://www.server.com/dir/page.shtm).

Fügen Sie zum Beispiel den Kommentar “heute ist der <!--#4DSCRIPT/MYMETH/MYPARAM-->” in eine statische Seite ein. Beim Laden der Seite ruft 4D –sofern vorhanden– die Datenbankmethode On Web Authentication auf, dann die Methode MeineMeth und übergibt den String “/MeinParam” als Parameter $1.

Die Methode gibt in $0 Text zurück, zum Beispiel “31.12.09”, der Ausdruck “heute ist der <!--4DSCRIPT/MeineMeth/MeinParam––>” also zu “Heute ist der 31.12.09”.

Die Methode MeineMeth lautet:

 C_TEXT($0)\\Dieser Parameter muss immer angegeben sein
 C_TEXT($1)\\Dieser Parameter muss immer angegeben sein
 $0:=String(Current date)

Wichtig: Sie müssen in der aufgerufenen Methode immer die Parameter $0 und $1 angeben.

Hinweis: Eine Methode, die über 4DSCRIPT aufgerufen wird, darf keine Elemente der Oberfläche aufrufen, wie DIALOG, ALERT... .

Da 4D Methoden in ihrer eigenen Reihenfolge erscheinen, lässt sich eine Methode aufrufen, die den Wert von vielen Variablen setzt, auf die später im Dokument verwiesen wird.

Hinweis: Sie können in eine statische Seite beliebig viele <!--4DSCRIPT...--> Kommentare einfügen.

Syntax: <!--#4DINCLUDE Pfad-->

Mit 4DINCLUDE können Sie in eine HTML Seite den Hauptteil einer anderen HTML Seite einfügen, die mit dem Parameter Pfad bezeichnet ist. Der Hauptteil einer HTML Seite bezeichnet alles, was innerhalb der Ausdrücke <BODY> und </BODY> steht.

Der Kommentar <!--#4DINCLUDE--> ist besonders hilfreich in Verbindung mit dem Test (<!--#4DIF-->) oder den Schleifen (<!--#4DLOOP-->). Er ist auch praktisch, um Banner nach einem bestimmten Kriterium oder zufällig einzufügen.

4D analysiert die aufgerufene Seite im Moment des Einfügens, unabhängig von der Endung des Dateinamens, und fügt dann den evtl. geänderten Inhalt in die Seite ein, von der der Aufruf 4DINCLUDE ausgeht.

Eine Seite, die über den Kommentar <!--#4DINCLUDE--> eingefügt wurde, wird im Web Cache genauso gesetzt wie die Seiten, die über eine URL angefordert oder über den Befehl WEB SEND FILE gesendet wurden.
Übergeben Sie in Pfad den Zugriffspfad des einzufügenden Dokuments. Beachten Sie, dass sich bei Aufrufen mit 4DINCLUDE der Pfad nach dem Dokument richtet, das gerade analysiert wird, d.h. nach dem Hauptdokument. Verwenden Sie den Schrägstrich (/) als Trenner zwischen den Dokumenten und die zwei Punkte (..), um in der Hierarchie eine Ebene höher zu gehen (HTML Syntax).

Hinweise:

  • Verwenden Sie das Tag 4DINCLUDE mit dem Befehl PROCESS 4D TAGS, ist der Standardordner der Ordner mit der Strukturdatei der Anwendung.
  • Mit <!--#4DBASE --> können Sie den Standardordner, den 4DINCLUDE in der aktuellen Seite verwendet, verändern (siehe unten)

Sie können <!--#4DINCLUDE Pfad--> innerhalb einer Seite unbegrenzt verwenden. Die Aufrufe von
<!--#4DINCLUDE Pfad--> sind jedoch nur auf einer Ebene möglich. Sie können also nicht den Kommentar
<!--#4DINCLUDE meindok3.html--> in den Hauptteil der Seite meindok2.html einfügen, die wiederum von
<!--#4DINCLUDE meindok2--> aufgerufen wird, welches in meindok1.html eingefügt ist. 4D prüft außerdem, dass die Einfügungen nicht rekursiv sind.

Bei einem Fehler erscheint der eingefügte Text in Form von "<!--#4DINCLUDE Pfad-->: Dokument kann nicht geöffnet werden".

Beispiele

<!--#4DINCLUDE Unterseite.html-->
<!--#4DINCLUDE Ordner/Unterseite.html-->
<!--#4DINCLUDE ../Ordner/Unterseite.html-->

4DBASE  

Syntax: <!--#4DBASE folderPath-->

Das Tag <!--#4DBASE --> bezeichnet ein Arbeitsverzeichnis, das vom Tag <!--#4DINCLUDE--> verwendet wird.
Beim Aufrufen in einer Web Seite ändert das Tag <!--#4DBASE --> alle nachfolgenden Aufrufe von <!--#4DINCLUDE--> auf dieser Seite bis zum nächsten <!--#4DBASE --> - sofern vorhanden. Wird der Ordner <!--#4DBASE --> aus einer enthaltenden Datei heraus geändert, findet er deren ursprünglichen Wert aus der übergeordneten Datei.

Der Parameter folderPath muss einen Pfad relativ zur aktuellen Seite enthalten und dieser muss mit einen Schrägstrich (/) enden. Der angegebene Ordner muss innerhalb des Web Ordners liegen.
Übergeben Sie das Schlüsselwort WEBFOLDER, um den Standardpfad, d.h. relativ zur Seite, wiederherzustellen.

Der folgende Code aus 4D v12, der für jeden Aufruf einen relativen Pfad angibt:

<!--#4DINCLUDE subpage.html--> 
<!--#4DINCLUDE folder/subpage1.html-->
<!--#4DINCLUDE folder/subpage2.html-->
<!--#4DINCLUDE folder/subpage3.html-->
<!--#4DINCLUDE ../folder/subpage.html-->

... lässt sich mit dem Tag <!--#4DBASE --> schreiben wie folgt:

<!--#4DINCLUDE subpage.html--> 
<!--#4DBASE folder/-->
<!--#4DINCLUDE subpage1.html-->
<!--#4DINCLUDE subpage2.html-->
<!--#4DINCLUDE subpage3.html-->
<!--#4DBASE ../folder/-->
<!--#4DINCLUDE subpage.html-->
<!--#4DBASE WEBFOLDER-->

Verzeichnis für die Home Page über das Tag <!--#4DBASE --> erstellen:

/* Index.html */
<!--#4DIF LangFR=True-->
    <!--#4DBASE FR/-->
<!--#4DELSE-->
    <!--#4DBASE US/-->
<!--#4DENDIF-->
<!--#4DINCLUDE head.html-->
<!--#4DINCLUDE body.html-->
<!--#4DINCLUDE footer.html-->

In der Datei Head.html wird der aktuelle Ordner durch <!--#4DBASE --> geändert, ohne dass sich sein Wert in Index.htm ändert:

/* Head.htm */
/* das Arbeitsverzeichnis hier ist relativ zur enthaltenen Datei (FR/ oder US/) */
<!--#4DBASE Styles/-->
<!--#4DINCLUDE main.css-->
<!--#4DINCLUDE product.css-->
<!--#4DBASE Scripts/-->
<!--#4DINCLUDE main.js-->
<!--#4DINCLUDE product.js-->

Syntax: <!--#4DIF expression--> {<!--#4DELSEIF expression2-->...<!--#4DELSEIF expressionN-->} {<!--#4DELSE-->} <!--#4DENDIF-->

Der Kommentar <!--#4DIF expression--> ermöglicht in Verbindung mit den Kommentaren <!--#4DELSE--> (optional) und <!--#4DENDIF-->, HTML Code auf bedingte Weise auszuführen.
Der Parameter expression kann jeden gültigen 4D Ausdruck enthalten, der einen booleschen Wert zurückgibt. Er muss in Klammern stehen und die Syntaxregeln von 4D berücksichtigen.

Die Blöcke <!--#4DIF expression> ... <!--#4DENDIF--> können ineinander verschachtelt sein. Analog zu 4D muss jeder mit <!--#4DIF expression--> geöffnete Kommentar mit <!--#4DENDIF--> geschlossen werden.

Bei einem Interpretationsfehler wird zwischen <!--#4DIF --> und <!--#4DENDIF--> anstelle des Inhalts der Text “<!--#4DIF expression-->: Ein boolescher Ausdruck wurde erwartet” eingefügt.
Entspricht nicht jedem <!-#-4DENDIF--> ein <!--#4DIF -->, wird anstelle des Inhalts der Text
<!--#4DIF expression-->: 4DENDIF wurde erwartet” eingefügt.

Über das Tag <!--#4DELSEIF--> können Sie eine unbegrenzte Anzahl von Bedingungen testen. Nur der Code, der auf die erste als Wahr gewertete Bedingung folgt, wird ausgeführt. Ist keine der Bedingungen wahr, wird keine Anweisung ausgeführt (wenn es kein abschließendes <!--#4DELSE--> gibt).
Sie können nach dem letzten Tag <!--#4DELSEIF--> ein Tag <!--#4DELSE--> verwenden. Sind alle Bedingungen falsch, werden die Anweisungen ausgeführt, die auf <!--#4DELSE--> folgen.

Die beiden nachfolgenden Codes sind gleichwertig:

  • Code nur mit 4DELSE:
    <!--#4DIF Condition1-->
      /* Condition1 ist wahr*/
    <!--#4DELSE-->
        <!--#4DIF Condition2-->
            /* Condition2 ist wahr*/
        <!--#4DELSE-->
            <!--#4DIF Condition3-->
                /* Condition3 ist wahr*/
            <!--#4DELSE-->
                /*Keine der Bedingungen ist wahr*/
            <!--#4DENDIF-->
        <!--#4DENDIF-->
    <!--#4DENDIF-->
  • Ähnlicher Code mit dem Tag 4DELSEIF:
    <!--#4DIF Condition1-->
         /* Condition1 ist wahr*/
    <!--#4DELSEIF Condition2-->
         /* Condition2 ist wahr*/
    <!--#4DELSEIF Condition3-->
        /* Condition3 ist wahr*/
    <!--#4DELSE-->
        /* Keine der Bedingungen ist wahr*/
    <!--#4DENDIF-->

Nachfolgendes Beispiel zeigt Code aus einer statischen HTML Seite, die je nach Ergebnis des Ausdrucks vname#"" eine andere Bezeichnung zeigt:

<BODY>
...
<!--#4DIF (vname#"")-->
Namen, die mit <!--#4DTEXT vname--> beginnen.
<!--#4DELSE-->
Es wurde kein Name gefunden.
<!--#4DENDIF-->
...
</BODY>

Dieses Beispiel fügt je nach angemeldetem Benutzer unterschiedliche Seiten ein:

<!--#4DIF LoggedIn=False-->
    <!--#4DINCLUDE Login.htm -->
<!--#4DELSEIF User="Admin" -->
    <!--#4DINCLUDE AdminPanel.htm -->
<!--#4DELSEIF User="Manager" -->
    <!--#4DINCLUDE SalesDashboard.htm -->
<!--#4DELSE-->
    <!--#4DINCLUDE ItemList.htm -->
<!--#4DENDIF-->

Syntax: <!--#4DLOOP Bedingung--> <!--#4DENDLOOP-->

Mit diesem Kommentar können Sie den Teil eines HTML Codes so oft wiederholen wie die Bedingung erfüllt ist. Der Teil wird begrenzt durch <!--#4DLOOP--> und <!--#4DENDLOOP-->. Sie können ineinander verschachtelt sein. Analog zu 4D muss jeder mit <!--4DLOOP Bedingung--> geöffnete Kommentar mit <!--#4DENDLOOP--> geschlossen werden.

Es gibt drei Bedingungstypen:

  • <!--#4DLOOP [Tabelle]-->Diese Syntax führt für jeden Datensatz der aktuellen Auswahl von Tabelle eine Schleife im laufenden Prozess aus. Der Teil des HTML Codes zwischen den beiden Kommentaren wird für jeden Datensatz der aktuellen Auswahl wiederholt.
Hinweis: Wird ein Tag 4DLOOP mit einer Tabelle verwendet, werden die Datensätze im Nur-Lesen Modus geladen.

Der HTML Code:

<!--#4DLOOP [Personen]-->
<!--#4DTEXT [Personen]Name--> <!--4DTEXT [Personen]Vorname--><BR>
<!--#4DENDLOOP-->

... lässt sich folgendermaßen in 4D Code übersetzen:

 FIRST RECORD([Personen])
 While(Not(End selection([Personen])))
    ...
    NEXT RECORD([Personen])
 End while

Hinweis: Verwenden Sie 4DLOOP mit einer Tabelle, werden die Datensätze nur im Lesemodus geladen.

Der folgende HTML Code:

<!--#4DLOOP [People]-->
<!--#4DTEXT [People]Name--> <!--#4DTEXT [People]Surname--><BR>
<!--#4DENDLOOP-->

... lässt sich in 4D Programmiersprache folgendermaßen ausdrücken:

 FIRST RECORD([People])
 While(Not(End selection([People])))
    ...
    NEXT RECORD([People])
 End while
  • <!--#4DLOOP array--> Diese Syntax führt für jedes Element des Array eine Schleife aus. Der laufende Zähler des Array erhöht sich mit jeder Wiederholung dieses Teils des HTML Codes.

Hinweis: Diese Syntax ist für zweidimensionale Arrays nicht verwendbar. Die Lösung: eine Methode mit verschachtelten Schleifen kombinieren.

Der HTML Code:

<!--#4DLOOP arr_names-->
<!--#4DTEXT arr_names{arr_names}--><BR>
<!--#4DENDLOOP-->

... lässt sich folgendermaßen in 4D Code übersetzen:

 For($Elem;1;Size of array(arr_names))
    arr_names:=$Elem
    ...
 End for
  • <!--#4DLOOP Methode-->Diese Syntax führt eine Schleife aus, solange die Methode Wahr zurückgibt. Sie lässt einen Parameter vom Typ Lange Ganzzahl zu. Sie wird das erste Mal mit dem Wert 0 (Null) aufgerufen, damit evtl. eine Initialisierung durchgeführt werden kann. Dann wird sie sukzessiv mit den Werten 1, 2, 3... aufgerufen, solange sie Wahr zurückgibt.

Aus Sicherheitsgründen kann die Datenbankmethode On Web Authentication einmal direkt vor der Initialisierung aufgerufen werden. Wird die Authentifizierung bestätigt, findet die Initialisierungsphase statt.

Warnung: Damit die Datenbank kompilierbar ist, müssen innerhalb der Methode unbedingt die Compilerbefehle C_BOOLEAN($0) und C_LONGINT($1) deklariert sein.

Der HTML Code:

<!--#4DLOOP meine_methode-->
<!--#4DTEXT var--> <BR>
<!--#4DENDLOOP-->

... lässt sich folgendermaßen in 4D Code übersetzen:

 If(AuthenticationWebOK)
    If(meine_methode(0))
       $counter:=1
       While(meine_methode($counter))
          ...
          $counter:=$counter+1
       End while
    End if
 End if

Die Methode meine_methode lautet:

 C_LONGINT($1)
 C_BOOLEAN($0)
 If($1=0)
  `Initialisierung
    $0:=True
 Else
    If($1<50)
       ...
       var:=...
       $0:=True
    Else
       $0:=False `Schleife wird beendet
    End if
 End if

Bei einem Interpretationsfehler wird zwischen <!--#4DLOOP--> und <!--#4DENDLOOP--> der Text “<!--#4DLOOP expression-->:Beschreibung” eingefügt.

Folgende Fehlerbeschreibungen sind möglich:

  • Ein derartiger Ausdruck wurde nicht erwartet (generischer Fehler)
  • Ungültiger Tabellenname (Fehler im Tabellennamen)
  • Es wurde ein Array erwartet (die Variable ist kein Array bzw. ein zweidimensionales Array)
  • Die Methode existiert nicht
  • Syntaxfehler (beim Ausführen der Methode)
  • Zugriffsfehler (Rechte nicht ausreichend für Zugriff auf Tabelle oder Methode)
  • 4DENDLOOP wird erwartet (die Anzahl von <!--#4DENDLOOP--> ist nicht gleich der Anzahl von <!--#4DLOOP-->)

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Web Server

 
SIEHE AUCH 

4D Objekte mit HTML Objekten verbinden
PROCESS 4D TAGS
URLs und Form Actions

 
SCHLÜSSELWÖRTER 

4DVAR, 4DTEXT, 4DHTMLVAR, 4DHTML, 4DSCRIPT, 4DINCLUDE, 4DIF, 4DLOOP, 4DELSEIF

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v14 R2)
4D Programmiersprache ( 4D v14 R3)
4D Programmiersprache ( 4D v13.5)
4D Programmiersprache ( 4D v14.3)

Geerbt von : 4D HTML Tags ( 4D v12.4)
Gesplittet : 4D HTML Tags ( 4D v14 R4)