Update cookies preferences
Promotic

Formátovací řetězec objektu PmFormat

Formát konverze mezi hodnotou a řetězcem.

Hodnota pro formátování může být typu:
- Float = reálné číslo (tzn. s desetinnou tečkou)
- Int = celé číslo
- Bool = hodnota true nebo false
- String = textový řetězec
- DateTime = datum a čas
- TimeSpan = časové rozpětí (tzn. hodnota neobsahuje měsíc a rok)


Parametry textového řetězce jsou ve formátu KeyVal, který je naplněn z hodnoty parametru sFormat metody SetFormat nebo CreatePmFormat.

Klíče společné všem typům:

Type:xx; - Typ hodnoty. Například "Type:Float;".
Float (přednastaveno) - reálné číslo
Int - celé číslo
Bool - logická hodnota (1/0)
String - textový řetězec
DateTime - Datum a čas
TimeSpan - Časové rozpětí
Len:nn - Celkový počet znaků bez LTxt a RTxt
pro číselné hodnoty včetně Sign, DSep, Group. Například "Len:6;".
Viz: Příklady pro typ Float.
-1 (přednastaveno) - neomezeno, pro Scan najít konec čísla
n - stanovený počet znaků
IfShort:nn - Co dělat když hodnota je kratší než Len. Například "Len:4;IfShort:2;".
0 (přednastaveno) - nedělat nic
1 - doplnit zleva znakem mezera
2 - doplnit zprava znakem mezera
7 - pouze pro číselné hodnoty: doplnit zleva nulami mezi znaménko a první cifru (pro ne číselné hodnoty jako IfShort:1)
IfLong:nn - Co dělat když hodnota je delší než Len. Například "Len:4;IfLong:2;".
Viz: Příklady pro typ Float.
0 (přednastaveno) - nedělat nic, to znamená nechat delší
1 - ořez zleva na délku Len
2 - ořez zprava na délku Len
4 - vyplnit znakem zadaným v IfLongPar na délku Len
5 - nahradí textem v IfLongPar
7 - pouze pro číselné hodnoty: vědecky format max do IfLongPar (pro ne číselné hodnoty jako IfLong:2)
IfLongPar:ss - Určuje znak(y) pro vyplnění k parametru IfLong. Například "Len:4;IfLong:5;IfLongPar:MyErr;".
ss - Znak(y)
pro IfLong:4; - znak kterým vyplnit (přednastaveno="", způsobí vyplnění znakem hvězdička "*")
pro IfLong:5; - náhradní text (přednastaveno="")
LTxt:ss - Text vlevo od hodnoty Například "LTxt:Hodnota ;".
Viz: Použití Radix pro formátování čísla do hexadecimálního tvaru.
RTxt:ss - Text vpravo od hodnoty (pro Scan nesmí být RTxt uvnitř hodnoty). Například "RTxt:°C;".
Viz: Příklady pro typ Float.
Case:nn - Konverze na velké/malé znaky (znaky v LTxt a RTxt se nepřevádí). Například "Case:2;".
Viz: Příklady pro typ String.
0 (přednastaveno) - nechat beze změny
1 - UpperCase - na velké znaky
2 - LowerCase - na malé znaky

Klíče společné všem číslům:

Radix:nn - Jiná číselná soustava (pro typ Int). Například "Type:Int;Radix:16;".
Viz: Použití Radix pro formátování čísla do hexadecimálního tvaru.
2 - binární
8 - oktálová
10 (přednastaveno) - decimální
16 - v hexadecimálním tvaru. Hexa znaky budou malé, ale lze je zvětšit pomocí Case:1;
Sign:nn - Jak zobrazovat znaménko plus. Například "Sign:1;".
Viz: Příklady pro typ Float.
0 (přednastaveno) - nezobrazovat (zobrazovat pouze "-")
1 - zobrazovat "+" (pokud je nula, pak mezera)
2 - zobrazovat " " (mezera)
Group:nn - Seskupování skupin čísel do trojic. Například "Group:1;".
Viz: Příklady pro typ Float.
0 (přednastaveno) - neseskupovat
1 - seskupovat vlevo od desetinného oddělovače (tisíce)
2 - seskupovat vpravo od desetinného oddělovače (tisíciny)
3 - seskupovat vlevo i vpravo od desetinného oddělovače (tisíce i tisíciny)
GroupSep:nn - Oddělovač mezi skupinami. Například "Group:1;GroupSep:2;".
0 (přednastaveno) - mezera
1 - tečka
2 - čárka
DLen:nn - Počet znaků vpravo od desetinného oddělovače. Například "DLen:3;".
Viz: Příklady pro typ Float.
-1 (přednastaveno) - neomezeno (plnění do počtu zadaného v Len, ale pokud Len=-1 pak DLen:3)
n - celé číslo včetně Group oddělovače (3=default)
DSep:nn - Typ desetinné tečky (má význam pouze pokud DLen!=0). Například "DSep:1;".
0 (přednastaveno) - tečka "."
1 - čárka ","
DZero:nn - Nuly vpravo za číslem (má význam pouze pokud DLen!=0). Například "DZero:1;".
0 (přednastaveno) - ponechat nuly
1 - nuly nahradit mezerou
2 - optimalizovat (smazat nuly a případně desetinný oddělovač)

Klíče pro DateTime:

Fmt:ss - Formát času viz: Formátovací předpis pro datum a čas (DateTime). Například "Type:DateTime;Fmt:%Y.%m.%d %H:%M:%S.%T;".
Viz: Příklady pro typ DateTime.

Klíče pro TimeSpan:

FmtType:nn (nepovinné) - Typ formátování časového rozpětí. Například "Type:TimeSpan;FmtType:10;".
Viz: Příklady pro typ TimeSpan.
0 (přednastaveno) - Uživatelský formát časového rozpětí určený formátovacím řetězcem. Viz klíč Fmt.
10 - Systémový formát časového rozpětí. Uvedeny jsou hodnoty použitých položek časového rozpětí spolu s písmenkem indikujícím typ položky. Položky s nulovou hodnotou se neuvádějí.
Syntaxe: [-][Nd][Nh][Nm][Ns][Nt], kde N je číslo a:
d - Počet dnů. Například 2d znamená 2 dny nebo 1.5d znamená 36 hodin.
h - Počet hodin. Například 2h znamená 2 hodiny nebo 1.5h znamená 90 minut.
m - Počet minut. Například 2m znamená 2 minuty nebo 1.5m znamená 90 sekund.
s - Počet sekund. Například 2s znamená 2 sekundy nebo 1.5s znamená 1500 milisekund.
t - Počet milisekund. Například 10t znamená 10 milisekund nebo 500t znamená 500 milisekund.
Fmt:ss - Uživatelský formát časového rozpětí viz: Formátovací předpis pro časové rozpětí (TimeSpan). Pouze pro FmtType je 0. Například "Type:TimeSpan;FmtType:0;Fmt:%*N%*d-%H:%M:%S.%T;".
Viz: Příklady pro typ TimeSpan.

Ostatní klíče:

FmtC:ss - Formát konverze jazyka C (zastaralý způsob pro zachování kompatability). Popis viz: Formátovací předpis jazyka C. Například "FmtC:%5.2f;".
Viz: Použití FmtC pro formátování podle jazyka C:.

Příklady pro typ Float

Kombinace klíčů RTxt a DLen:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("Type:Float;RTxt: %;DLen:2;");
var sVal = oFmt.Format(90.845);   // sVal = "90.84 %"
Použití Group pro rozdělení čísla do trojic cifer:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("Len:12;DLen:7;IfLong:2;Group:3;");
var sVal = oFmt.Format(-1234567.123456);   // sVal = "-1 234 567.1"
Použití Sign pro zarovnání plusových a mínusových hodnot:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("Sign:2;");
var sVal;
sVal = oFmt.Format(1235.67);   // sVal = " 1235.670"
sVal = oFmt.Format(-1235.67);   // sVal = "-1235.670"

Příklady pro typ Int

Použití Radix pro formátování čísla do hexadecimálního tvaru:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("Type:Int;Radix:16;LTxt:0x;Case:1;");
var sVal = oFmt.Format(10.58);   // sVal = "0xB"
var nVal = oFmt.Scan(sVal);   // nVal = 11
Použití Radix pro formátování čísla do oktálového tvaru:
JavaScriptVBScriptVyber a zkopíruj do schránky

oFmt = Pm.CreatePmFormat("Type:Int;Radix:8;LTxt:0o;");
sVal = oFmt.Format(10.58);   // sVal = "0o13"
nVal = oFmt.Scan(sVal);   // nVal = 11
Použití Radix pro formátování čísla do binárního tvaru:
JavaScriptVBScriptVyber a zkopíruj do schránky

oFmt = Pm.CreatePmFormat("Type:Int;Radix:2;LTxt:0b;");
sVal = oFmt.Format(3.4);   // sVal = "0b11"
nVal = oFmt.Scan(sVal);   // nVal = 3

Příklady pro typ Bool

Příklad1:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("Type:Bool;");
var sVal;
sVal = oFmt.Format(3.14);   // sVal = "1"
sVal = oFmt.Format(0);   // sVal = "0"
Příklad2:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("Type:Bool;LTxt:Ln;RTxt:V;");
var sVal;
sVal = oFmt.Format(true);   // sVal = "Ln1V"
sVal = oFmt.Format(false);   // sVal = "Ln0V"

Příklady pro typ String

Příklad1:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("Type:String;LTxt:x;RTxt:q;Case:1;");
var sVal = oFmt.Format("aBcD");   // sVal = "xABCDq"
Příklad2:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("Type:String;LTxt:X_;RTxt:_Q;Len:6;IfLong:2;");
var sVal = oFmt.Format("abcdefgh");   // sVal = "X_abcdef_Q"

Příklady pro typ DateTime

Příklad:
JavaScriptVBScriptVyber a zkopíruj do schránky

var t = Pm.CreateDate(2024, 2, 13, 4, 15, 6, 789);

var oFmt = Pm.CreatePmFormat("Type:DateTime;Fmt:%2d.%2m.%4Y %2H:%2M:%2S.%T");
var sVal = oFmt.Format(t);   // sVal = "13.02.2024 04:15:06.789"

oFmt = Pm.CreatePmFormat("Type:DateTime;Fmt:%2d.%2m.%4Y %2H:%2M:%2S");
sVal = oFmt.Format(t);   // sVal = "13.02.2024 04:15:06"

oFmt = Pm.CreatePmFormat("Type:DateTime;Fmt:%4Y.%2d.%2m %2H:%2M:%2S");
sVal = oFmt.Format(t);   // sVal = "2024.13.02 04:15:06"

oFmt = Pm.CreatePmFormat("Type:DateTime;Fmt:%*d.%*m.%*Y %*H:%*M:%*S.%T");
sVal = oFmt.Format(t);   // sVal = "13.2.2024 4:15:6.789"

oFmt = Pm.CreatePmFormat("Type:DateTime;Fmt:%*Y.%*m.%*d");
sVal = oFmt.Format(t);   // sVal = "2024.13.2"

oFmt = Pm.CreatePmFormat("Type:DateTime;Fmt:%*H:%*M:%*S");
sVal = oFmt.Format(t);   // sVal = "4:15:6"

oFmt = Pm.CreatePmFormat("Type:DateTime;Fmt:%Y%m%d%H%M%S");
sVal = oFmt.Format(t);   // sVal = "20241302041506"

Příklady pro typ TimeSpan

Příklad:
JavaScriptVBScriptVyber a zkopíruj do schránky

var t = Pm.CreateDate(0, 0, 53, 4, 15, 6, 789);

var oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%2d %2H:%2M:%2S.%T");
var sVal = oFmt.Format(t);   // sVal = "53 04:15:06.789"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%*d %*H:%*M:%*S");
sVal = oFmt.Format(t);   // sVal = "53 4:15:6"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%d%m%Y%H%M%S%T");
sVal = oFmt.Format(t);   // sVal = "13022024041506789"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%N%2d %2H:%2M:%2S.%T");
sVal = oFmt.Format(-t);   // sVal = "-53 04:15:06.789"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;FmtType:10");
sVal = oFmt.Format(-t);   // sVal = "-53d4h15m6s789t"

t = Pm.CreateDate(0, 0, 1053, 4, 15, 6, 789);

oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%*N%d-%H:%M:%S.%T");
sVal = oFmt.Format(t);   // sVal = "1053-04:15:06.789"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%*N%H:%M:%S.%T");
sVal = oFmt.Format(t);   // sVal = "25276:15:06.789"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%*N%M:%S.%T");
sVal = oFmt.Format(t);   // sVal = "1516575:06.789"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%*N%S.%T");
sVal = oFmt.Format(t);   // sVal = "90994506.789"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;FmtType:10");
sVal = oFmt.Format(t);   // sVal = "1053d4h15m6s789t"

t = Pm.CreateDate(0, 0, 0, 1, 30, 0, 0);

oFmt = Pm.CreatePmFormat("Type:TimeSpan;Fmt:%*N%d-%H:%M:%S.%T");
sVal = oFmt.Format(t);   // sVal = "0-01:30:00.000"

oFmt = Pm.CreatePmFormat("Type:TimeSpan;FmtType:10");
sVal = oFmt.Format(t);   // sVal = "1h30m"

Použití FmtC pro formátování podle jazyka C:

Příklad:
JavaScriptVBScriptVyber a zkopíruj do schránky

var oFmt = Pm.CreatePmFormat("FmtC:%d\"");
var sVal = oFmt.Format(1);   // sVal = "1"

oFmt = Pm.CreatePmFormat("FmtC:x%dq");
sVal = oFmt.Format(1);   // sVal = "x1q"

oFmt = Pm.CreatePmFormat("FmtC:%f");
sVal = oFmt.Format(12.3456789);   // sVal = "12.3456789"

oFmt = Pm.CreatePmFormat("FmtC:%13.2f");
sVal = oFmt.Format(123456789.123456789);   // sVal = " 123456789.12"

oFmt = Pm.CreatePmFormat("FmtC:%x");
sVal = oFmt.Format(255);   // sVal = "ff"

oFmt = Pm.CreatePmFormat("FmtC:%03X");
sVal = oFmt.Format(10.58);   // sVal = "00B"

oFmt = Pm.CreatePmFormat("FmtC:n=%03X");
sVal = oFmt.Format(10.58);   // sVal = "n=00B"

Historie:
Pm9.00.26: Nová volba FmtType umožňuje zadat systémový tvar formátu pro TimeSpan.
Pm9.00.17: Vytvořeno
© MICROSYS, spol. s r.o.