Zde popsaný formátovací předpis slouží pro zadání předpisu jak nějakou hodnotu (hodnoty) zapsat do textu.
Například určuje, že reálné číslo se má do textu zapsat na 3 desetinná místa, atd.
Tento formátovaný text se v aplikaci PROMOTIC používá:
Pokud ve formátovací předpis se nepoužijí znaky
% a
\, pak bude výsledek roven formátovacímu textu a na hodnoty řídicích proměnných nebude brán zřetel.
Znak
% slouží pro výpis hodnot řídicích proměnných. Znaky za
% definují způsob výpisu:
- Znak % určuje výpis znaku %. Příklad: "%%" bude po zpracování "%"
- Znak - (minus) určuje zarovnání hodnoty vlevo
- první sada cifer určuje minimální šířku pole. Příklad: "%5d" bude po zpracování "..123" (tečky znamenají mezery)
- číslo 0 na začátku první sady cifer určuje vkládaní cifry 0 místo mezery. Příklad: "%05d" bude po zpracování "00123".
- tečka a za ní druhá sada cifer určuje přesnost, tzn. maximální počet desetinných míst. Příklad: "%6.3f" bude po zpracování "12.345", "%.2f" bude po zpracování "12.34".
-
znak datového typu:
Datový typ |
Znak |
Poznámka |
Příklad |
Boolean |
'u' |
|
%u |
Byte |
'u' |
|
%u |
Integer |
'd' |
zobrazení decimálně (např. "254", "-56" ..) |
%d, %5d, %05d |
Integer |
'x' |
zobrazení v hexadecimálním tvaru (např. "E5F") |
%x, %4x, %04x |
Long |
'ld' |
|
%ld, %7ld, %07d |
Single |
'e'
'f' |
zobrazí se v podobě: [-]d.ddde[+-]dd
zobrazí se v podobě: [-]dddd.ddd |
%e
%f, %3.4f |
Double |
'le'
'lf' |
zobrazí se v podobě: [-]d.ddde[+-]dd
zobrazí se v podobě: [-]dddd.ddd |
%le
%lf, %4.7lf |
String |
's' |
|
%s |
Rozšíření syntaxe formátovacího předpisu o
escape sekvence:
Tuto rozšířenou syntaxi lze použít pouze při volání metod
Pm.StringFormat a
Pm.StringScan.
Sekvence |
Znak |
ASCII význam (viz ASCII tabulka) |
\\ |
Znak "\" |
Backslash (zpětné lomítko) |
\a |
Znak s kódem &H07 |
BEL |
\b |
Znak s kódem &H08 |
BS - Backspace |
\f |
Znak s kódem &H0c |
FF - Formfeed |
\n |
Znak s kódem &H0a |
LF, NL - Linefeed, New Line |
\r |
Znak s kódem &H0d |
CR - Carriage return |
\t |
Znak s kódem &H09 |
HT - Tab, Horizontal Tabulator |
\v |
Znak s kódem &H0b |
VT - Vertical Tabulator |
\xh |
Znak s kódem &Hh |
|
\xhh |
Znak s kódem &Hhh |
|
Poznámka:
HexaString (textový řetězec v hexadecimálním tvaru) lze používat dvojím způsobem:
1) Zobrazení čísla v hexadecimálním tvaru, kde vyšší řády jsou vlevo. Odpovídá uložení v paměti
Big-endian.
Jedná se o konverze hodnoty čísla do textového řetězce (a obráceně) pomocí formátovacího řetězce.
Pro využití
HexaString tímto způsobem se doporučuje používat objekt
PmFormat.
2) Zakódování obsahu části paměti o určité velikosti (např. 1B, 2B, 4B …) v hexadecimálním tvaru. Potom záleží na způsobu uložení čísla v paměti.
Na procesorech
Intel a
AMD (architektura
x86 nebo
x64) se používá tzv.
Little-endian, kde nižší řády jsou vlevo.
Pro využití
HexaString tímto způsobem se doporučuje používat výhradně objekt
PmBuffer, který umí pracovat s
Little-endian i
Big-endian.
Příklad1:
Nechť je formátovací předpis:
Teplota=%5d ... Vykon=%5.2f
a v pořadí první proměnná (Teplota, hodnota 98) je typu Integer, v pořadí druhá proměnná (Vykon, hodnota 34.2345) je typu Single.
Výstupní text bude v podobě:
Teplota= 98 ... Vykon=34.23
Příklad2:
JavaScriptVyber a zkopíruj do schránky
var str = Pm.StringFormat("New line \n char 18hexa: \x18", 1);
je ekvivalentní zápisu:
VBScriptVyber a zkopíruj do schránky
Dim str
str = "New line " & Chr(&H0a) & " char 18hexa: " & Chr(&H18)
Nyní je korektní předávat parametr bez pole (například v metodě
Pm.StringFormat):
JavaScriptVBScriptVyber a zkopíruj do schránky
var nVal = 1;
Pm.Debug(Pm.StringFormat("Hodnota: %d", nVal));
Dim nVal
nVal = 1
Pm.Debug Pm.StringFormat("Hodnota: %d", nVal)