Deutsch English
Alphabetischer Index
Array-Funktionen
CGI-Funktionen
Datentypen
Datums/Uhrzeit-Funktionen
Debugging
Operatoren
Ramtext-Funktionen
  • loadtemplate()
  • ramtext()
  • ramtext_copy()
  • ramtext_delete()
  • ramtext_find()
  • ramtext_insert()
  • ramtext_name()
  • ramtext_part()
  • ramtext_paste()
  • ramtext_subst()
  • subst()
    Selektion
    Socket-Funktionen
    Sonstige-Funktionen
    Sprachelemente
    Statistik-Funktionen
    Stream-Funktionen
    String-Funktionen
    System-Funktionen
    Tabellen-Funktionen
    Text-Funktionen
    Volltext-Funktionen
    Zahlen-Funktionen
    Home    Überblick    Suche    Impressum    Kontakt    Mitglieder
    Themenkomplex Ramtext-Funktionen
    Funktion subst()
    Kurz ersetzt einen String im System-Ramtext
    Syntax SUBST(target : STRING; (replacement : STRING | db : INTEGER; field)[; mode : INTEGER]) : INTEGER
    Parameter target : beliebiger STRING
    replacement : beliegiger STRING
    db : Tabellenhandle von OpenDB
    field : Feldnummer oder Feldbezeichner (als String)
    mode : INTEGER (0 = Vorgabe)
    Ergebnis 0 : target wurde nicht gefunden
    # 0 : Ersetzung wurde durchgeführt
    Siehe auch:
    loadtemplate() cgiwritetemplate()
    Beschreibung Die Funktion SUBST gehört zur Gattung der Universalfunktionen. Sie ist mehrfach überladen, das bedeutet, sie kann mit recht unterschiedlichen Parametern aufgerufen werden. Hier die einfachste Form:

    SUBST(target,a_string)
    ersetzt das erste Vorkommen von target durch string

    Beispiel: Wir haben ein Template, in das wir das aktuelle Datum und die aktuelle Uhrzeit (Serverzeit) einfügen wollen. Im Template steht dazu folgender Text:



    Ein Template für die tdbengine

    Datum: #datum#    Zeit: #zeit#


    Das ist eine HTML-Seite, die durch die tdbengine bearbeitet wurde





    (die Einfassung von Targets mit dem '#'-Zeichen hat sich als recht vorteilhaft herausgestellt, weil hierbei die Verwechslungsgefahr am geringsten ist)

    Das Template sei unter templates/meine_seite.html« gespeichert. Das folgende kleine Programm löst dann unsere Aufgabe:
     PROCEDURE Main
       cgiwriteln('content-type: text/html')
       cgiwriteln('')
       IF LoadTemplate('templates/meine_seite.html')=0 THEN
         subst('#datum#',datestr(today))
         subst('#zeit#',timestr(now,0))
         CGIWriteTemplate
       ELSE
         cgiwriteln('template wurde nicht gefunden')
       END
     ENDPROC
    

    Wenn der einzufügende String mit »extern:« beginnt, wird nicht etwa dieser String eingefügt, sondern der Rest des Strings wird als Pfad zu einer Textdatei interpretiert und diese ersetzt dann das Target. Entsprechend verweist ein String, der mit »ramtext:« beginnt, auf eine interne Textdatei.

    Gerade, wenn das Target durch ganze Textdateien ersetzt werden sollen, wird die Art der Ersetzung wichtig: Was passiert mit Zeilenumbrüchen? In welchem Zeichensatz soll die Ersetzung durchgeführt werden? Das kann mit einem weiteren Parameter festgelegt werden, dem »Modus«.

    SUBST(target,a_string,modus)
    

    Ersetzt das target ...

    Modus
    0 (Vorgabe) -> Ersetzung ohne weitere Bearbeitung
    1 -> Alle Zeichen werden nach HTML konvertiert
    2 -> Alle Zeichen werden nach ANSI konvertiert
    4 -> Harte Zeilenumbrüche werden durch »
    « ersetzt
    16 -> Der externe Text liegt im ASCII-Format vor (statt ANSI)
    32 -> Es wird nur der BODY-Teil einer externen HTML-Seite gelesen
    128 -> In diesem Fall wird die Groß-/Kleinschreibung beim Target (der zu ersetzenden Zeichenfolge) ignoriert. Man sollte diesen Modus jedoch nur wählen, wenn er wirklich erforderlich ist, da die zusätzlich benötigte Rechenleistung doch enorm ist.

    Diese Modi können auch noch addiert werden, um das gewünschte Ziel zu erreichen. So bedeutet beispieweise der Modus 5 (=1+4), dass bei der Ersetzung eine Konvertierung nach HTML stattfindet und die harten Zeilenumbrüche durch »
    « ersetzt werden.

    An Stelle des Ersetzungsstrings kann auch ein Kombination aus Tabellenhandle und Tabellenfeld stehen. Dann wird der Inhalt des angegebenen Feldes eingefügt.

    Beispiel: Der folgende Code ersetzt alle Datenbankfelder im Template.

    VAR i, db : INTEGER;
    ...
    db:=OpenDB(...)
    nloop(i,maxlabel(db)-1,subst('#'+label(db,i+1)+'#',db,i+1,5))
    

    tdbengine chat
    irc.tdbengine.org
    #tdbengine

       Copyright © 2003-2004 tdb Software Service GmbH
       Alle rechte vorbehalten. / All rights reserved
       Letzte Änderung: 21.10.2004
    {Fehler für :execmacro{execmacro="sessionspy"}