Niżej opisana reguła formatowania służy do wprowadzania przepisu, w jaki sposób wartość (wartości) zapisać w tekście.
Na przykład określa, że liczba rzeczywista ma zostać zapisana do tekstu na 3 liczby dziesiętne, itd.
W ten sposob formatowany tekst jest stosowany w aplikacji PROMOTIC:
Jeżeli w regułi formatowania nie są wykorzystane znaki
% oraz
\, wtedy będzie wynik równy formatoanemu tekstu i na wartości zmiennych sterujących nie będą brane pod uwagę.
Znak
% służy do wypisywania wartości zmiennych sterujących. Znaki za
% ustalają sposób wypisu:
- Znak % określa wypisanie znaku %. Przykład: "%%" po opracowaniu będzie "%"
- Znak - (minus) określa wyrównanie wartości wlewo
- 1.łańcuch cyfr określa minimalną szerokość pola. Przykład: "%5d" po opracowaniu będzie "..123" (kropki oznaczają spacje)
- liczba 0 na początku 1.łańcucha cyfr określa wypisywanie cyfry 0 zamiast spacji. Przykład: "%05d" po opracowaniu będzie "00123".
- kropka i za nię 2.łańcuch cyfr określa dokładność, tzn. maksymalna ilość miejsc dziesiętnych. Przykład: "%6.3f" po opracowaniu będzie równy "12.345", "%.2f" po opracowaniu będzie równy "12.34".
-
znak typu danych:
Typ danych |
Znak |
Notatka |
Przykład |
Boolean |
'u' |
|
%u |
Byte |
'u' |
|
%u |
Integer |
'd' |
wypis w układzie dziesiątkowym (np. "254", "-56" ..) |
%d, %5d, %05d |
Integer |
'x' |
wypis w układzie szesnastkowym (np. "E5F") |
%x, %4x, %04x |
Long |
'ld' |
|
%ld, %7ld, %07d |
Single |
'e'
'f' |
zostanie wyświetlona w formie: [-]d.ddde[+-]dd
zostanie wyświetlona w formie: [-]dddd.ddd |
%e
%f, %3.4f |
Double |
'le'
'lf' |
zostanie wyświetlona w formie: [-]d.ddde[+-]dd
zostanie wyświetlona w formie: [-]dddd.ddd |
%le
%lf, %4.7lf |
String |
's' |
|
%s |
Rozszerzenie składni reguły formatowania o
escape sekwencje:
Taką rozszerzoną składnię można zastosować tylko przy wywołaniu metod
Pm.StringFormat oraz
Pm.StringScan.
Sekwencja |
Znak |
Znaczenie ASCII (patrz Tabela kodów ASCII) |
\\ |
Znak "\" |
Backslash (lewy ukośnik) |
\a |
Znak o kodzie &H07 |
BEL |
\b |
Znak o kodzie &H08 |
BS - Backspace |
\f |
Znak o kodzie &H0c |
FF - Formfeed |
\n |
Znak o kodzie &H0a |
LF, NL - Linefeed, New Line |
\r |
Znak o kodzie &H0d |
CR - Carriage return |
\t |
Znak o kodzie &H09 |
HT - Tab, Horizontal Tabulator |
\v |
Znak o kodzie &H0b |
VT - Vertical Tabulator |
\xh |
Znak o kodzie &Hh |
|
\xhh |
Znak o kodzie &Hhh |
|
Notatka:
HexaString (łańcuch tekstowy w układzie szesnastkowym) może być użyty na dwa sposoby:
1) Wyświetlenie liczb w układzie szesnastkowym, gdzie wyższe rzędy znajdują się po lewej stronie. Odpowiada to przechowywaniu w pamięci
Big-endian.
Chodzi o konwersję wartości liczbowej do łańcucha tekstowego (i odwrotnie) przy pomocy łańcucha formatowania.
Do zastosowania
HexaString w ten sposób jest zalecane zastosowanie obiektu
PmFormat.
2) Kodowanie zawartości sekcji pamięci o określone wielkości (np. 1B, 2B, 4B …) w układzie szesnastkowym. Następnie zależy to od tego, jak liczba jest przechowywana w pamięci.
Na procesorach
Intel i
AMD (architektura
x86 lub
x64) używana jest tzw.
Little-endian, gdzie niższe rzędy znajdują się po lewej stronie.
Do zastosowania
HexaString w ten sposób jest zalecane stosowanie wyłącznie obiektu
PmBuffer, który może obsługiwać zarówno
Little-endian jak i
Big-endian.
Przykład1:
Miejmy następującą reguła formatowania:
Temperatura=%5d ... Moc=%5.2f
i pierwsza w kolejności zmienna (Temperatura, wartość 98) jest typu Integer, druga w kolejności zmienna (Moc, wartość 34.2345) jest typu Single.
Wyświetlony tekst będzie w formie:
Temperatura= 98 ... Moc=34.23
Przykład2:
JavaScriptWybierz oraz skopiuj do schowka
var str = Pm.StringFormat("New line \n char 18hexa: \x18", 1);
jest równoznaczny z zapisem:
VBScriptWybierz oraz skopiuj do schowka
Dim str
str = "New line " & Chr(&H0a) & " char 18hexa: " & Chr(&H18)
Teraz jest poprawne przekazywać parametr bez pola (na przykład w metodzie
Pm.StringFormat):
JavaScriptVBScriptWybierz oraz skopiuj do schowka
var nVal = 1;
Pm.Debug(Pm.StringFormat("Wartość: %d", nVal));
Dim nVal
nVal = 1
Pm.Debug Pm.StringFormat("Wartość: %d", nVal)