Získávání seznamů souborů a adresářů z FTP serverů
FTP klient potřebuje seznam souborů a adresářů aktuálního adresáře serveru s co nejvíce údaji, například datem, velikostí, uživatelem, skupinou a právy. Položky se ukazují v panelu pro další práci. Seznam vzniká z prostého textového výpisu určeného lidem, nikoli automatickému zpracování. Téměř každý server tak používá vlastní formát podle systému a jazyka, proto musí klient podporovat mnoho formátů.
Každému formátu odpovídá typ serveru s podmínkou automatického rozpoznání, seznamem datových sloupců včetně jejich viditelnosti a parserem textového výpisu. Typy jsou v Konfigurace/Servery. Přidávat a měnit je lze v Úprava typu serveru.
Zvolte automatické rozpoznání typu nebo konkrétní typ. Viz Typ serveru v Pokročilé nastavení.
Získání seznamu se zadaným typem serveru
Zadaný typ se použije k analýze textového výpisu. Úspěch vytvoří seznam souborů a adresářů. Při chybě se zobrazí varování a jen původní text v panelu, nepoužitelný pro operace.
Adresář „.“ se ze seznamu odstraní; „..“ také, pokud jde o kořen. Jinak je „..“ vždy viditelný bez ohledu na skrytý atribut.
Získání seznamu s automatickým typem serveru
Typy se zkoušejí postupně. U každého se vyhodnotí podmínka; nepravdivá jej přeskočí, pravdivá spustí analýzu. Úspěch vrátí seznam, chyba přejde na další typ.
Pokud analýza neuspěje, zkusí se postupně i typy přeskočené podmínkou. Úspěch vrátí seznam; chyba pokračuje dalším typem.
Selžou-li všechny typy, zobrazí se varování a pouze původní text v panelu, nepoužitelný pro operace.
Typ se rozpoznává jen při prvním výpisu a používá dál, aby i prázdné seznamy měly stejné sloupce. Pokud další výpis nelze zpracovat, klient hledá jiný typ.
Adresář „.“ se ze seznamu odstraní; „..“ také, pokud jde o kořen. Jinak je „..“ vždy viditelný bez ohledu na skrytý atribut.
Syntaxe parseru
Řádkový komentář začíná # a končí koncem řádku.
Každé pravidlo začíná * a končí ;. Počet pravidel není omezen. Pravidlo tvoří funkce oddělené čárkou.
Funkce má název, (, seznam parametrů a ). Úplný seznam funkcí je níže.
Parametry odděluje čárka a jsou tvořeny výrazy.
Výraz je identifikátor sloupce, stavová proměnná, konstanta nebo jedna binární operace ve tvaru (first_operand operation_symbol second_operand). Operand může být identifikátor sloupce, stavová proměnná či konstanta.
Identifikátor sloupce tvoří znak '<', název a znak '>'.
Úplné seznamy stavových proměnných a operátorů jsou níže.
Konstanta je řetězec, číslo nebo logická hodnota.
Řetězec je uzavřen dvojitými uvozovkami ('"') a musí být na jednom řádku. Escape sekvence začínají znakem '\'. Podporovány jsou "\\" pro '\', "\"" pro '"', "\t" pro tabulátor a "\r" a "\n" pro konce řádků CR a LF. Ostatní sekvence jsou syntaktickou chybou.
Číslo tvoří desetinné číslice. Záporné začíná -, kladné může začínat +.
Logická hodnota je true nebo false bez uvozovek.
Sloupce
Sloupec má identifikátor, typ hodnot, prázdnou hodnotu, název a popis pro panel a zarovnání. Identifikátor se používá pro přiřazení hodnoty. Pro každou položku, soubor či adresář, má sloupec jen jednu hodnotu. Bez přiřazení se použije definovaná prázdná hodnota. Sloupec může být v panelu viditelný či skrytý; typy Název a Přípona jsou vždy viditelné. Definují se v Úprava sloupce.
Typy sloupců:
| Typ | Popis |
|---|---|
| Název | řetězec; název souboru či adresáře; právě jeden sloupec je povinný a nelze jej skrýt; prázdná hodnota nemá význam; parser musí každé položce přiřadit hodnotu. Bez přiřazení pravidlo nepřidá žádnou položku, což vynechává prázdné a nepodstatné řádky. Přiřazení prázdného řetězce ("") je chyba. |
| Přípona | řetězec; přípona souboru automaticky odvozená ze sloupce Název; nelze skrýt; prázdná hodnota nemá význam |
| Velikost souboru v bajtech | 64bitové celé číslo bez znaménka; velikost v bajtech; pro adresáře je nula a zobrazuje se DIR; výchozí prázdná hodnota je nula |
| Datum posledního zápisu | datum posledního zápisu či změny; musí být platné, jinak se nahradí 1. lednem 1602; výchozí je 1. leden 1602 |
| Čas posledního zápisu | čas posledního zápisu či změny; výchozí prázdná hodnota je 0:00:00 |
| Typ souboru | řetězec; popis typu určený Windows podle přípony; automaticky se odvozuje ze sloupce Název; prázdná hodnota nemá význam |
| Každý text | řetězec obecného použití; výchozí prázdná hodnota je prázdný řetězec ("") |
| Každý datum | datum obecného použití; neplatné se nahradí 1. lednem 1602; výchozí prázdná hodnota je prázdný řetězec (""), tedy bez přiřazení panel nic neukazuje |
| Každý čas | čas obecného použití; výchozí prázdná hodnota je prázdný řetězec (""), tedy bez přiřazení panel nic neukazuje |
| Každé číslo | 64bitové celé číslo se znaménkem; obecné použití; prázdná hodnota je prázdný řetězec (""), tedy bez přiřazení panel nic neukazuje |
Existují také virtuální sloupce <is_dir>, <is_hidden> a <is_link> s logickými hodnotami: je položka adresář (false znamená soubor), je skrytá (false znamená bez skrytého atributu) a je odkaz (false znamená není odkaz). Přiřazení není nutné; prázdné hodnoty jsou soubor, není skrytý a není odkaz.
Syntaxe podmínky automatického rozpoznání
Podmínka je logický výraz. Operátory podle priority: NOT, AND, OR. NOT je unární negace, AND a OR binární konjunkce a disjunkce. Podvýrazy mohou být v závorkách. Operandy tvoří tyto funkce:
| Funkce | Popis |
|---|---|
| syst_contains(string) | vrátí true, pokud odpověď na FTP SYST, tedy typ systému serveru, obsahuje zadaný řetězec bez rozlišení velikosti písmen |
| welcome_contains(string) | vrátí true, pokud první zpráva serveru obsahuje zadaný řetězec bez rozlišení velikosti písmen |
| reg_exp_in_syst(regular_expression_string) | vrátí true, pokud odpověď na FTP SYST obsahuje řetězec odpovídající regulárnímu výrazu bez rozlišení velikosti písmen |
| reg_exp_in_welcome(regular_expression_string) | vrátí true, pokud první zpráva serveru obsahuje řetězec odpovídající regulárnímu výrazu bez rozlišení velikosti písmen |
Syntaktická analýza
Analýza uspěje, pokud definovaná pravidla projdou celý textový výpis.
Aktuální pozice výpisu se nazývá ukazatel. Analýza jej přesouvá od začátku na konec.
Pravidlo lze použít, pokud všechny funkce uspějí, sloupec Název nedostane prázdný řetězec (smí dostat neprázdný nebo nic) a ukazatel se dostane na konec některého řádku. Po použití se vždy přesune na začátek dalšího řádku.
Funkce může posouvat ukazatel a přiřazovat či měnit hodnoty sloupců.
Parser může mít libovolně mnoho pravidel. Zkoušejí se podle pořadí definice, vždy se použije první použitelné.
Při zrušení přenosu nebo síťové chybě může být výpis neúplný. Ořízne se na celé řádky.
Neúplný výpis se řeší při použití pravidel. Dosažení jeho konce pomocí pravidel znamená úspěch. Pokud by funkce potřebovala přejít na další neexistující řádek, analýza rovněž úspěšně skončí, jako by zpracovávané řádky ve výpisu nebyly.
Podporované velikosti souborů
Plugin podporuje dva způsoby vyjádření velikosti souboru: v bajtech a v blocích. Velikost v bajtech přiřaďte sloupci typu Velikost souboru v bajtech; velikost v blocích sloupci typu Každé číslo se standardním názvem "Blocks" nebo "BlkSize". Při označení skupiny souborů se pak součet v bajtech nebo blocích zobrazí v informačním řádku.
Funkce parseru
Není-li uvedeno jinak, funkce vždy uspěje, neposune ukazatel a nepřiřadí žádnou hodnotu. Pokud posouvá ukazatel, bez výslovné zmínky nesmí překročit konec řádku.
Před použitím identifikátoru sloupce ve výrazu je třeba přiřadit hodnotu. Jinak výraz nemá smysl a lze jej nahradit logickou konstantou vypočtenou z výchozí prázdné hodnoty sloupce.
Poznámka: v následující tabulce je bílý znak mezera nebo tabulátor.
Funkce parseru:
| Funkce | Popis |
|---|---|
| if(expression) | Výsledek výrazu (parametr expression) musí být typu boolean; funkce uspěje, je-li výsledek výrazu true. |
| assign(<column>, expression) | Typ výsledku výrazu (parametr expression) musí odpovídat typu hodnot ve sloupci (parametr <column>); přiřadí výsledek výrazu sloupci. |
| skip_white_spaces() | Přeskočí všechny bílé znaky na pozici ukazatele; přesune ukazatel za ně (pokud existují). |
| skip_to_number() | Přesune ukazatel na nejbližší desítkovou číslici. |
| white_spaces() | Přeskočí všechny bílé znaky na pozici ukazatele; funkce uspěje pouze tehdy, pokud se ukazatel posune. |
| white_spaces(number) | Přeskočí řetězec obsahující zadaný počet (parametr number) bílých znaků na pozici ukazatele; přesune ukazatel za tento řetězec; funkce uspěje pouze tehdy, pokud takový řetězec existuje. |
| white_spaces_and_line_ends() | Přeskočí všechny bílé znaky a znaky konce řádku na pozici ukazatele; funkce uspěje pouze tehdy, pokud se ukazatel posune a není na konci výpisu (za bílými znaky a konci řádků byl nalezen nějaký znak). |
| rest_of_line() | Přesune ukazatel na konec řádku; funkce uspěje pouze tehdy, pokud se ukazatel posune. |
| rest_of_line(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu string; přiřadí sloupci řetězec od pozice ukazatele po místo před koncem řádku; ukazatel přesune na konec řádku; funkce uspěje pouze tehdy, pokud se ukazatel posune. |
| word() | Přeskočí všechny znaky kromě bílých znaků a znaků konce řádku; funkce uspěje pouze tehdy, pokud se ukazatel posune. |
| word(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu string; přiřadí sloupci řetězec od pozice ukazatele po místo před prvním bílým znakem nebo koncem řádku; přesune ukazatel za tento řetězec; funkce uspěje pouze tehdy, pokud se ukazatel posune. |
| number(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu integer; přiřadí sloupci desítkové číslo začínající na pozici ukazatele; za číslem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za číslo; funkce uspěje pouze tehdy, pokud číslo existuje, je správně ukončeno a u sloupce typu Velikost souboru v bajtech není záporné. |
| positive_number(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu integer; přiřadí sloupci kladné desítkové číslo začínající na pozici ukazatele; je-li číslo záporné, přiřadí výchozí prázdnou hodnotu (nulu pro typ Velikost souboru v bajtech, prázdný řetězec pro typ Každé číslo); za číslem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za číslo; funkce uspěje pouze tehdy, pokud číslo existuje a je správně ukončeno. |
| number_with_separators(<column>, string) | Hodnoty ve sloupci (parametr <column>) musí být typu integer; přiřadí sloupci desítkové číslo začínající na pozici ukazatele, které obsahuje oddělovače skupin číslic pro snazší čtení velkých čísel; povolené oddělovače určuje parametr string; mohou to být všechny znaky kromě desítkových číslic a znaků '+' a '-'. Za číslem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za číslo; funkce uspěje pouze tehdy, pokud číslo existuje, je správně ukončeno a u sloupce typu Velikost souboru v bajtech není záporné. |
| month_3(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu date; přiřadí sloupci měsíc vyjádřený třemi písmeny na pozici ukazatele; podporuje názvy měsíců v několika jazycích (nyní angličtinu, němčinu, norštinu a švédštinu); za názvem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za název; funkce uspěje pouze tehdy, pokud je název měsíce známý a všechny názvy měsíců ve výpisu jsou ve stejném jazyce. |
| month_3(<column>, string) | Hodnoty ve sloupci (parametr <column>) musí být typu date; přiřadí sloupci měsíc vyjádřený třemi písmeny na pozici ukazatele; používá názvy měsíců uvedené v řetězci (parametr string), který obsahuje dvanáct třípísmenných názvů oddělených mezerami (např. "jan feb mar apr may jun jul aug sep oct nov dec" pro angličtinu); za názvem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za název; funkce uspěje pouze tehdy, pokud je název měsíce v řetězci. |
| month_txt(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu date; přiřadí sloupci měsíc vyjádřený názvem na pozici ukazatele; podporuje názvy měsíců v několika jazycích (nyní němčinu); za názvem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za název; funkce uspěje pouze tehdy, pokud je název měsíce známý a všechny názvy měsíců ve výpisu jsou ve stejném jazyce. |
| month_txt(<column>, string) | Hodnoty ve sloupci (parametr <column>) musí být typu date; přiřadí sloupci měsíc vyjádřený názvem na pozici ukazatele; používá názvy měsíců z řetězce (parametr string), který obsahuje dvanáct názvů oddělených mezerami (např. "Jan. Feb. März Apr. Mai Juni Juli Aug. Sept. Okt. Nov. Dez." pro němčinu); za názvem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za název; funkce uspěje pouze tehdy, pokud je název měsíce v řetězci. |
| month(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu date; přiřadí sloupci měsíc vyjádřený desítkovým číslem na pozici ukazatele; za číslem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za číslo; funkce uspěje pouze tehdy, pokud je číslo v rozsahu 1 až 12. |
| day(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu date; přiřadí sloupci den vyjádřený desítkovým číslem na pozici ukazatele; za číslem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za číslo; funkce uspěje pouze tehdy, pokud je číslo v rozsahu 1 až 31. |
| year(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu date; přiřadí sloupci rok vyjádřený desítkovým číslem na pozici ukazatele; za číslem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za číslo; funkce uspěje pouze tehdy, pokud je číslo v rozsahu 0 až 999 (v rozsahu 0 až 79 přičte 2000; v rozsahu 80 až 999 přičte 1900; např. rok 107 znamená rok 2007) nebo v rozsahu 1602 až 9999. |
| time(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu time; přiřadí sloupci hodiny, minuty a volitelně sekundy a milisekundy vyjádřené desítkovými čísly na pozici ukazatele; podporované formáty času jsou: 00:00, 00:00:00 nebo 00:00:00.000; následuje-li za časem "a", "am", "p" nebo "pm", chápe jej jako "a.m." (dopoledne) nebo "p.m." (odpoledne) a odpovídajícím způsobem čas upraví; za časem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno či číslice); přesune ukazatel za čas; funkce uspěje pouze tehdy, pokud je čas platný (rozsahy: 0-23, 0-59, 0-59 a 0-999). |
| year_or_time(<column_date>, <column_time>) | Hodnoty ve sloupcích (parametry <column_date> a <column_time>) musí být typu date a time; přiřadí rok a volitelně čas (pouze hodiny a minuty) vyjádřený desítkovým číslem (rok) nebo dvěma desítkovými čísly oddělenými znakem ':' (čas) na pozici ukazatele; podporuje standardní unixový formát: je-li na pozici ukazatele rok, čas není známý; je-li tam čas, rok se vypočítá z aktuálního data podle pravidla, že celé datum nemá být starší než šest měsíců; za čísly musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za rok či čas; funkce uspěje pouze tehdy, pokud je rok či čas platný (rozsahy: 1602-9999 a 0-23:0-59). |
| all(number) | Přeskočí zadaný počet (parametr number) znaků; přesune ukazatel za přeskočené znaky; funkce uspěje pouze tehdy, pokud byly přeskočeny všechny zadané znaky. |
| all(<column>, number) | Hodnoty ve sloupci (parametr <column>) musí být typu string; přiřadí sloupci řetězec začínající na pozici ukazatele a obsahující zadaný počet znaků (parametr number); přesune ukazatel za řetězec; funkce uspěje pouze tehdy, pokud takový řetězec existuje. |
| all_to(string) | Najde první výskyt zadaného řetězce (parametr string) bez rozlišování velikosti písmen a přesune ukazatel za tento výskyt; funkce uspěje pouze tehdy, pokud byl řetězec nalezen. |
| all_to(<column>, string) | Hodnoty ve sloupci (parametr <column>) musí být typu string; přiřadí sloupci řetězec od pozice ukazatele po místo za prvním výskytem zadaného řetězce (parametr string), bez rozlišování velikosti písmen; přesune ukazatel za nalezený řetězec; funkce uspěje pouze tehdy, pokud byl zadaný řetězec nalezen. |
| all_up_to(<column>, string) | Hodnoty ve sloupci (parametr <column>) musí být typu string; přiřadí sloupci řetězec od pozice ukazatele po místo před prvním výskytem zadaného řetězce (parametr string), bez rozlišování velikosti písmen; přesune ukazatel za nalezený řetězec; funkce uspěje pouze tehdy, pokud byl zadaný řetězec nalezen. |
| unix_link(<is_dir>, <column_name>, <column_link>) | Sloupce <column_name> a <column_link> musí být typu Název a Každý text; zpracuje řetězec od pozice ukazatele po místo před koncem řádku; přesune ukazatel za řetězec; očekává standardní unixový formát odkazu: "link_name -> target_name" nebo "link_name" (není-li cíl dostupný); získá název odkazu a případně cíl a rozpozná, zda odkaz míří na soubor, nebo adresář (heuristika: obsahuje-li název nebo cíl příponu, pravděpodobně jde o soubor, jinak o adresář; pokud tato heuristika nevyhovuje, můžete za funkci unix_link přidat např. "assign(<is_dir>,false)"); přiřadí název odkazu sloupci <column_name>; je-li cíl známý, přiřadí jej sloupci <column_link>; je-li cílem adresář, přiřadí virtuálnímu sloupci <is_dir> hodnotu true; funkce uspěje pouze tehdy, pokud má řetězec očekávaný formát a nezačíná bílým znakem. |
| unix_device(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu string; přiřadí sloupci řetězec začínající na pozici ukazatele, který obsahuje dvě desítková čísla oddělená čárkou a několika mezerami (např. "27, 26"); za řetězcem musí následovat běžný oddělovač (',', '.', ';', ':' atd.), bílý znak nebo konec řádku (nikoli písmeno); přesune ukazatel za řetězec; funkce uspěje pouze tehdy, pokud byl řetězec nalezen. |
| add_string_to_column(<column>, expression) | Hodnoty ve sloupci (parametr <column>) a výsledek výrazu (parametr expression) musí být typu string; přidá výsledek výrazu k hodnotě sloupce. |
| cut_white_spaces_end(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu string; odstraní bílé znaky z konce řetězce ve sloupci a přiřadí sloupci nový řetězec. |
| cut_white_spaces_start(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu string; odstraní bílé znaky ze začátku řetězce ve sloupci a přiřadí sloupci nový řetězec. |
| cut_white_spaces(<column>) | Hodnoty ve sloupci (parametr <column>) musí být typu string; odstraní bílé znaky ze začátku i konce řetězce ve sloupci a přiřadí sloupci nový řetězec. |
| back(number) | Posune ukazatel zpět o zadaný počet znaků (parametr number); funkce uspěje pouze tehdy, pokud je tento posun možný (nelze přejít na předchozí řádek). |
| cut_end_of_string(<column>, number) | Hodnoty ve sloupci (parametr <column>) musí být typu string; odstraní z konce řetězce ve sloupci zadaný počet znaků (parametr number) a přiřadí sloupci nový řetězec; funkce uspěje pouze tehdy, pokud měla původní hodnota ve sloupci délku alespoň number. |
Stavové proměnné používané při syntaktické analýze
K dispozici jsou následující stavové proměnné:
| Proměnná | Popis |
|---|---|
| first_nonempty_line | boolean; hodnota je true pouze tehdy, je-li ukazatel na prvním neprázdném řádku (řádku, který neobsahuje jen bílé znaky). |
| last_nonempty_line | boolean; hodnota je true pouze tehdy, je-li ukazatel na posledním neprázdném řádku (řádku, který neobsahuje jen bílé znaky); nezáleží na tom, zda je výpis úplný, nebo neúplný. |
| next_char | string; řetězec obsahující jeden znak na pozici ukazatele; je-li ukazatel na konci výpisu, řetězec je prázdný. |
| next_word | string; řetězec od pozice ukazatele po místo před prvním bílým znakem nebo koncem řádku. |
| rest_of_line | string; řetězec od pozice ukazatele po místo před koncem řádku. |
Operátory používané při syntaktické analýze
Před použitím identifikátoru sloupce ve výrazu je třeba přiřadit hodnotu. Jinak výraz nemá smysl a lze jej nahradit logickou konstantou vypočtenou z výchozí prázdné hodnoty sloupce.
K dispozici jsou následující operátory:
| Operátor | Popis |
|---|---|
| == | Rovnost; porovnání řetězců rozlišuje velikost písmen. |
| != | Nerovnost; porovnání řetězců rozlišuje velikost písmen. |
| eq | Rovnost řetězců; pouze pro řetězce; porovnání nerozlišuje velikost písmen. |
| not_eq | Nerovnost řetězců; pouze pro řetězce; porovnání nerozlišuje velikost písmen. |
| in | Hledání podřetězce; hodnota je true pouze tehdy, je-li podřetězec (levý operand) obsažen v řetězci (pravý operand); porovnání nerozlišuje velikost písmen. |
| not_in | Hodnota je true pouze tehdy, pokud podřetězec (levý operand) není obsažen v řetězci (pravý operand); porovnání nerozlišuje velikost písmen. |
| end_with | Hodnota je true pouze tehdy, pokud řetězec (levý operand) končí podřetězcem (pravý operand); porovnání nerozlišuje velikost písmen. |
| not_end_with | Hodnota je true pouze tehdy, pokud řetězec (levý operand) nekončí podřetězcem (pravý operand); porovnání nerozlišuje velikost písmen. |
Viz také
Konfigurace/Servery
Dialog Úprava typu serveru
Dialog Nový sloupec/Úprava sloupce
Dialog Test syntaktické analýzy
From the Sally manual (GPL-2.0-or-later), © 1997-2023 Open Salamander Authors; © 2025-2026 Elias Bachaalany. Source: manual source (zip) · original page in the Sally repository