RunProgram (WBIK)

Formßt bloku:

RunProgram: program_ve_vnit°nφm_jazyce

Program_ve_vnit°nφm_jazyce je nßzev objektu typu program v aplikaci, kter² obsahuje proceduru s pevn²m jmΘnem RunProgram, bez parametr∙:

  procedure RunProgram;
  begin
    ...
  end;

V²znam:

V²znam tohoto bloku konektoru velmi poklesl a je zde uveden pouze z d∙vodu zp∞tnΘ kompatibility aplikacφ.

Pomocφ tohoto bloku lze provßd∞t generovßnφ dynamick²ch HTML strßnek pon∞kud odliÜn²m zp∙sobem, ne₧ konektor Üablona. Ke generovßnφ slou₧φ procedura vnit°nφho jazyka, kterß umφ p°eΦφst vstupnφ formulß°ovΘ a systΘmovΘ prom∞nnΘ a na urΦenß mφsta HTW Üablony dosazovat ji₧ hotovΘ texty.

Generovßnφ textu

V HTW Üablon∞ je definovßn libovoln² poΦet nßv∞Ütφ

    <%:nßzev_nßv∞Ütφ%>

Nßzev_nßv∞Ütφ musφ b²t slovo zaΦφnajφcφ pφsmenem (i s diakritikou), nebo znakem _ a obsahujφcφ pouze pφsmena (vΦetn∞ pφsmen s diakritikou), Φφslice a znak _ .

V procedu°e RunProgram lze pomocφ specißlnφ funkce SendToWeb generovat na tato nßv∞Ütφ libovoln² text. Tento text m∙₧e obsahovat i formßtovacφ znaΦky HTML - viz p°φklad.

Blok RunProgram m∙₧e b²t v konektoru i na vφce mφstech, lze generovat text vφcekrßt na stejnß nßv∞Ütφ (starÜφ text se v₧dy "odsune dop°edu"). Bloky se provedou v tom po°adφ, v jakΘm se naleznou v konektoru.

╚tenφ vstupnφch prom∞nn²ch

V procedu°e lze p°eΦφst vstupnφ prom∞nnΘ, kterΘ byly p°edßny webserverem tomuto WBC konektoru.

Funkce, kterΘ lze pou₧φt v procedu°e RunProgram, jsou ulo₧eny v knihovn∞ WBINET.DLL, kterß je souΦßstφ dodßvky WinBase602. Funkce je nutnΘ proto deklarovat jako externφ. V p°ilo₧enΘm includu I_WBINET.PGM (soubor v adresß°i s WinBase602) jsou vÜechny pot°ebnΘ deklarace ji₧ uvedeny, nejjednoduÜÜφ cestou je tedy vlo₧it include do VaÜeho programu. P°edtφm pochopiteln∞ musφme naimportovat tento soubor a tφm vytvo°it nov² databßzov² objekt typu program.

POZOR!!:

Na chybu p°i vykonßvßnφ procedury RunProgram je nutnΘ reagovat pouze volßnφm funkce SetUserError.

Blok RunProgram lze kombinovat s "obvykl²m" zp∙sobem generovßnφ dynamickΘho HTML dokumentu (tj. pomocφ SQLStatement, bloku Program a bloku GetVariable). Lze si p°edstavit situaci, kdy mΘn∞ komplikovanΘ Φasti HTML dokumentu jsou generovßny "klasicky" a pro generovßnφ nap°. komplikovan∞jÜφch formulß°∙ je pou₧it blok RunProgram.

Provoz na Linuxu

ZdrojovΘ texty procedury RunProgram mohou b²t stejnΘ jako p°i provozu na platform∞ Windows. Je t°eba naincludovat I_WBINET.PGM (bez ohledu na to, ₧e v n∞m jsou v²Üe zmφn∞nΘ funkce oznaΦeny jako externφ, nachßzejφcφ se v knihovn∞ WBINET.DLL). CGI klient (Linux) p°i provßd∞nφ procedury RunProgram poznajφ volßnφ t∞chto funkcφ a nehledß knihovnu WBINET.DLL, ale tyto funkce zavolß p°φmo, proto₧e se nachßzejφ v Internet klientovi pro tyto OS.

Dφky tomuto °eÜenφ lze pou₧φvat stejnΘ konektory a procedury RunProgram beze zm∞ny jak na platform∞ Windows, tak na platform∞ Linux.

P°φklad kombinujφcφ oba zp∙soby pou₧itφ - na nßv∞Ütφ v Üablon∞ vypφÜe nßzvy a obsah vstupnφch prom∞nn²ch:

HTW Üablona

<%WBC%>
RunProgram: Test_runprogram
<%/wbc%>

<html><head><title>Titulek</title></head>
<body>
Seznam vstupnφch prom∞nn²ch:<br>
<table border=0 cellpadding=0 cellspacing=2>
<%:promenne%>
</table>
<p>
Obsah prvnφho nßv∞Ütφ: <%:navesti1%>
</body>
</html>

Program Test_runprogram

{$I I_wbinet}

procedure RunProgram;
var
    varcount,i:short;
    varname,varvalue:string[255];
begin
    // vypsat vstupnφ prom∞nnΘ na nßv∞Ütφ promenne
    varcount:=GetVarCount;
    for i:=0 to varcount-1 do
      begin
        varname:="";
        if( GetVar(i,varname) ) then
          begin
            GetVarValue(i,varvalue);
            SendToWeb("promenne","<tr><td>");
            SendToWeb("promenne",varname);
            SendToWeb("promenne","</td><td>");
            SendToWeb("promenne",varvalue);
            SendToWeb("promenne","</td></tr>");
          end
        else
            SetSTWError("GetVar failed");
      end;
    // vypsat libovoln² dalÜφ text na nßv∞Ütφ navesti1 a navesti2
    SendToWeb("navesti1","text na nßv∞Ütφ 1");
end;

begin
end.