VaxNt/ProDB.PGuide.Mustr
Přiřazení je základní obrat na definici hodnoty proměnné. Existuje řada variant, z nichž vystačíme zejména
s následujícími. Uvědomme si, že proměnné jsou vlastně složky TStringListu a uvnitř se na ně interpreter
odkazuje jako na Context.Values['Promenna']. Z toho také plyne, že běžné proměnné nemají case sensitivní jména.
Funkce ArgList Popis
-------------------------------------------------------------------------------------------------------------
set N,V,N,V,... do proměnné N dosadí hodnotu V a tak prochází postupně všechny
dvojice argumentů. N jsou jména proměnných v aktuálním kontextu a
V literály, ale i hodnoty získané dolarovou notací z jiných proměnných.
set.trim N,V,N,V,... dtto, ale trimuje dosazované hodnoty
setv N,M,N,M,... kopíruje zase po dvojicích systematicky hodnoty, vždy do N dosadí
aktuální hodnotu M. Celý arglist může být zase prefixován vykřičníky
a je tedy možno používat i dosti složitou indirekci
context.set N=V varianta překonávající potíž s tím, že čárka je oddělovač, zde funguje
jako set, ale odělovačem argumentů je rovnítko a druhý argument je
jednoduše celý zbytek řádku ...
_set alias pro context.set
clear vyprázdní všechny proměnné příkazem Context.Clear ...
clear.more N,N,... vyprázdní pouze vyjmenované proměnné příkazem Context.Values['N']:=''
_clear alias pro clear.more
-------------------------------------------------------------------------------------------------------------
Poznámky:
1.Díky dolarové notaci je možno používat i hodně divokou indirekci. Například "set !$(A),$(C)\n$(Q) znamená:
vezmi hodnotu proměnné A
chápej ji jako jméno proměnné
do této proměnné dosaď konkatenovanou a řádkem oddělenou hodnotu proměnných C a Q
2.Hodnoty proměnných mohou obsahovat CRLF - ty jsou zakódovány pomocí \n.
3.Příkaz setv A,B je vlastně nahraditelný dvojící:
push A
pop B
4.Díky iteraci přes dlouhý arglist je možno na jednom řádku schovat velké množství akcí. Navíc je
díky vyhodnocení zleva doprava možno v následných přiřazeních už ta, která proběhla právě před chvilkou.
Příklady:
set Prijmeni,Nowak,Jmeno,Aloys,Titul,Ing.
set Dneska,$(Today)
set !Pacient, $(Jmeno) $(Prijmeni)
set !$(Zavod).Suma,$(X)
setv A,Abylo,B,Bbylo,...
set A,,B,,C,0,
set Ted,$(DateTime)$(Random),Kdo,$(User),
Aktualizováno dne 20000704. Komentář: info@jlabs.cz