Adattípus-konverziók
TapHome szkript konverziós függvények — TOSTRING szám- és dátumformátum-karakterláncokkal, TODOUBLE, TOBYTES, valamint ENCODE / DECODE XML-escapeléshez és Base64-hez.
A konverziós függvények értékeket alakítanak szöveggé és vissza: számokat és dátumokat formázott szöveggé, szöveget számmá és bájtokká, illetve szöveget Base64 vagy XML-biztos alakra. A BCD-konverzió (TOBCD, FROMBCD) a Bitműveletek oldalon, a színkonverzió (HSVTORGB, RGBTOHSV) a Színek oldalon található.
TOSTRING
A TOSTRING bármilyen értéket szöveggé alakít — számokat és dátumokat opcionális .NET formátum-karakterlánccal, bájtgyűjteményeket és blobokat szövegkódolással.
| |
| Bemenet | Eredmény |
|---|---|
| szöveg | Változatlan. |
| szám | Formátum nélkül a szám tizedesponttal (21.5). Formátummal lásd: Formátum-karakterláncok. |
datetime | Formátum nélkül yyyy/MM/dd hh:mm:ss.fff (12 órás óra, AM vagy PM nélkül); formátummal a megadott minta. |
collection<uint8>, blob | A bájtok szövegként dekódolva. A második argumentum a kódolás neve, alapértelmezés szerint iso-8859-1, például "utf-8". |
| egyéb gyűjtemény | Cannot cast collection of ‘X’ to string hiba. |
Példa
TOSTRING(192, "X");
# Result: "C0"
TOSTRING(192, "X4");
# Result: "00C0"
TOSTRING(123.34, "F4");
# Result: "123.3400"
TOSTRING(123.34, "F0");
# Result: "123"
TOSTRING(BYTECOLLECTION("48656c6c6f"));
# Result: "Hello"
TOSTRING(BYTECOLLECTION("48656c6c6f"), "iso-8859-1");
# Result: "Hello"Listener szkriptben a TOSTRING(RECEIVEDMSG.PAYLOAD, "utf-8") szövegként olvassa be a fogadott üzenetet — lásd: RECEIVEDMSG.
Formátum-karakterláncok
A TOSTRING a számokat és dátumokat .NET formátum-karakterláncokkal formázza, és mindig tizedespontot használ, függetlenül a vezérlőegység nyelvi beállításaitól.
| Formátum | Bemenet | Kimenet |
|---|---|---|
"F2" | 231.4721 | "231.47" — rögzített számú tizedesjegy |
"F0" | 21.5 | "22" — egész számra kerekítve |
"0.0" | 7 | "7.0" — egyéni minta |
"00" | 7 | "07" — vezető nullák |
"X", "X4" | 255 | "FF", "00FF" — hexadecimális, nagybetűs |
"yyyy-MM-dd" | datetime | "2026-01-15" |
"HH:mm" | datetime | "08:30" — 24 órás óra |
"dd.MM.yyyy HH:mm:ss" | datetime | "15.01.2026 08:30:00" |
Megjegyzések
- A nagy
Xbetűt tartalmazó formátum az értéket először 32 bites egész számmá alakítja, majd hexadecimálisan írja ki. - Dátumformátumokban a
HHa 24 órás, ahha 12 órás óra; azMMa hónap, azmma perc.
Példa — időbélyeg naplóhoz vagy HTTP-kéréshez
VAR now := NOW();
"Updated " + TOSTRING(now, "dd.MM.yyyy HH:mm");TODOUBLE
A TODOUBLE tizedespontot használó szövegből olvas be számot, és NaN értéket ad vissza, ha a szöveg nem szám.
| |
Visszatérési érték — double. NaN, ha a szöveg nem olvasható be; 0 a Null esetén.
Megjegyzések — A szöveg mindig tizedesponttal olvasódik be. A vessző ezres elválasztónak számít, így az "1,5" eredménye 15. Ha a forrás tizedesvesszőt használ, előbb cseréld le a vesszőt.
Példa
TODOUBLE("232");
# Result: 232
TODOUBLE("-192.332");
# Result: -192.332
TODOUBLE("some text");
# Result: NaN
TODOUBLE(REPLACE("21,5", ",", "."));
# Result: 21.5TOBYTES
A TOBYTES a szöveget bájtgyűjteménnyé (collection<uint8>) kódolja, iso-8859-1 kódolással, hacsak nem adsz meg másikat.
| |
Megjegyzések — A régebbi dokumentáció ezt a függvényt TOBYTEARRAY néven említette; ez a név a nyelvben nem létezik. A TOBYTES függvénnyel készítheted elő az adatokat a SENDDATA vagy az UNPACKVALUE számára.
Példa
VAR bytes := TOBYTES("Hello");
LENGTH(bytes);
# Result: 5
VAR euro := TOBYTES("€", "utf-8");
LENGTH(euro);
# Result: 3Hibák — TOBYTES - argument 1 must be a string (a szöveg Null); TOBYTES - unknown encoding.
ENCODE
Az ENCODE a szöveget XML-hez escapeli ("xml"), vagy Base64-be kódolja ("base64", a szöveg UTF-8 bájtjaiból).
| |
Megjegyzések
- Az
"xml"a&,',",>és<karaktereket&,',",>és<alakra cseréli. - Üres szövegre üres karakterláncot ad vissza. A kódolás neve nem érzékeny a kis- és nagybetűkre.
- A
"base64"Core 2022.2 vagy újabb verziót igényel.
Példa
ENCODE("a<b & c>d", "xml");
# Result: "a<b & c>d"
ENCODE("user:pass", "base64");
# Result: "dXNlcjpwYXNz"Példa — HTTP Basic hitelesítési fejléc
VAR auth := "Authorization: Basic " + ENCODE("user:pass", "base64");
VAR response := SENDHTTPREQUEST("/status", "GET", "", auth);Hibák — ENCODE Unknown encoding. Valid values are ‘xml’, ‘base64’.
DECODE
A DECODE az ENCODE fordítottja: az XML-entitásokat visszaalakítja karakterekké ("xml"), vagy a Base64-et UTF-8 szöveggé dekódolja ("base64").
| |
Példa
DECODE("dXNlcjpwYXNz", "base64");
# Result: "user:pass"
DECODE("a < b", "xml");
# Result: "a < b"
DECODE(PARSEJSON(json, "payload"), "base64");Hibák — The provided text does not have the base64 format.; DECODE Unknown encoding. Valid values are ‘xml’, ‘base64’.