Tekst i zbirke
Funkcije skripte TapHome za nizove znakova, zbirke i polja bajtova — LENGTH, GETAT, SETAT, APPEND, INSERT, REMOVEAT, COPY, INDEXOF, REPLACE, SPLIT, COMPARE, BYTECOLLECTION, UINT16COLLECTION, BOOLCOLLECTION.
Ove funkcije kao prvi argument primaju niz znakova ili zbirku i rade sa znakovima ili elementima prema indeksu koji počinje od nule.
- Zbirku funkcije
APPEND,INSERT,REMOVEAT,SETATiREPLACEmijenjaju na mjestu i vraćaju istu zbirku. Za niz znakova vraćaju novi niz znakova. - Blob, kao
RECEIVEDMSG.PAYLOAD, prihvaćaju samoLENGTH,GETAT,COPYiINDEXOF. - Prvi argument
Nullzaustavlja skriptu porukom Parameter 1 is null, osim uLENGTH(0),INDEXOF(-1) iSPLIT(prazna zbirka);COMPAREprijavljuje COMPARE arguments 1 and 2 must be strings.
ENCODE i DECODE (XML, Base64) nalaze se na stranici Pretvorbe tipova podataka, EQUALS na stranici Logika i dijagnostika. Tipovi zbirki opisani su na stranici Tipovi podataka.
LENGTH
LENGTH vraća broj znakova niza znakova, elemenata zbirke ili bajtova bloba; za broj vraća veličinu njegova tipa u bajtovima, a za Null 0.
LENGTH("Hello World");
# Result: 11
LENGTH(40);
# Result: 8 (a decimal literal is a double)
LENGTH(BYTECOLLECTION("010203"));
# Result: 3GETAT
GETAT vraća element na indeksu: char niza znakova, element zbirke ili bajt bloba.
| |
Vraća — za niz znakova char, a ne niz od jednog slova; usporedite ga sa znakovnim literalom kao 'l'.
GETAT("Hello", 2);
# Result: 'l' (Char)
GETAT({1, 2, 4}, 2);
# Result: 4SETAT
SETAT zamjenjuje element na indeksu; zbirka se mijenja na mjestu, a u nizu znakova znak na indeksu zamjenjuje se tekstom iz newValue.
| |
SETAT("Hello", 1, "a");
# Result: "Hallo"
SETAT("Hello", 4, "o World");
# Result: "Hello World"
VAR c := {1, 2, 4};
SETAT(c, 2, 3);
# Result: {1, 2, 3}, and c is now {1, 2, 3}APPEND
APPEND dodaje vrijednost na kraj niza znakova ili zbirke; zbirka se mijenja na mjestu i vraća, a ne kopira.
| |
Napomene — Dodavanje zbirke s istim tipom elementa dodaje sve njezine elemente. Pojedinačna vrijednost dodaje se kao jedan element. Zbirka drugog tipa elementa je pogreška (Cannot append ‘UInt8’ collection to ‘Double’ collection).
VAR c := {1, 2};
APPEND(c, 3);
# Result: {1, 2, 3}, and c is now {1, 2, 3}
APPEND(c, {4, 5});
# Result: {1, 2, 3, 4, 5}
APPEND("abc", "def");
# Result: "abcdef"INSERT
INSERT umeće vrijednost na indeks: podniz u niz znakova ili element u zbirku na mjestu.
| |
INSERT("Hello", 5, " World");
# Result: "Hello World"
INSERT("Hello", 1, "i");
# Result: "Hiello"
INSERT({1, 2, 4}, 2, 3);
# Result: {1, 2, 3, 4}REMOVEAT
REMOVEAT uklanja count znakova ili elemenata, zadano 1, počevši od indeksa.
| |
REMOVEAT("Hello", 1);
# Result: "Hllo"
REMOVEAT("Hello", 3, 2);
# Result: "Hel"
REMOVEAT({1, 2, 3, 4}, 2, 2);
# Result: {1, 2}COPY
COPY vraća novi niz znakova, zbirku ili blob s length stavki počevši od from; bez length kopira do kraja, bez from cijelu vrijednost.
| |
COPY("Hello World", 2);
# Result: "llo World"
COPY("Hello World", 2, 4);
# Result: "llo "
COPY(BYTECOLLECTION("01020304"), 2, 1);
# Result: {0x03}Pogreške — Parameter 1 must be a non-empty string pri kopiranju iz praznog niza znakova.
INDEXOF
INDEXOF vraća položaj prvog pojavljivanja vrijednosti u nizu znakova, zbirci ili blobu ili -1 kada vrijednost nije pronađena.
| |
INDEXOF("Hello World", "Wor");
# Result: 6
INDEXOF("Hello World", "or12");
# Result: -1
INDEXOF(BYTECOLLECTION("ab cd ee ff 01 02"), 2);
# Result: 5Pogreške — Parameter 2 must be a non-empty string pri traženju praznog niza znakova u nizu znakova.
REPLACE
REPLACE zamjenjuje svako pojavljivanje vrijednosti: niz znakova daje novi niz znakova, a u zbirci se odgovarajući elementi zamjenjuju na mjestu.
| |
REPLACE("Hello", "l", "");
# Result: "Heo"
REPLACE("Hello", "lo", "22");
# Result: "Hel22"
REPLACE(BYTECOLLECTION("050607"), 5, 9);
# Result: {0x09, 0x06, 0x07}Pogreške — Empty string to replace kada je what prazan niz znakova.
SPLIT
SPLIT dijeli niz znakova na svakom razdjelniku i vraća collection<string>; prazni dijelovi se zadržavaju.
| |
Parametri — separator je char, niz znakova, collection<char> ili collection<string>.
SPLIT("1;2;3;4", ";");
# Result: {"1", "2", "3", "4"}
SPLIT("1;2;3.4", "2;");
# Result: {"1;", "3.4"}
SPLIT("1;2;3.4", {"2", "3."});
# Result: {"1;", ";", "4"}COMPARE
COMPARE uspoređuje dva niza znakova i vraća negativan broj kada se prvi u redoslijedu nalazi prije drugoga, 0 kada su jednaki i pozitivan broj kada se nalazi iza njega; oslonite se samo na predznak, a ne na veličinu.
| |
Napomene — Bez opcija centralna jedinica vraća razliku kodova prvih različitih znakova, pa se velika slova u redoslijedu nalaze prije malih. S CompareOptions (IgnoreCase, IgnoreNonSpace, IgnoreSymbols, IgnoreKanaType, IgnoreWidth, OrdinalIgnoreCase, StringSort, Ordinal, None) nizovi znakova uspoređuju se prema jezičnim pravilima invarijantne kulture, jednako na svakoj centralnoj jedinici, prilagođeno tim opcijama.
COMPARE("abc", "abc");
# Result: 0
COMPARE("abc", "ABC");
# Result: 32
COMPARE("a", "c");
# Result: -2
COMPARE("abc", "ABC", CompareOptions.IgnoreCase);
# Result: 0Pogreške — COMPARE arguments 1 and 2 must be strings.
BYTECOLLECTION
BYTECOLLECTION stvara collection<uint8>, bilo iz niza heksadecimalnih znamenki, bilo popunjenu zadanim brojem nultih bajtova (1 – 2048).
| |
Napomene — Znakovi niza koji nisu heksadecimalne znamenke zanemaruju se, pa razmaci, zarezi i crtice mogu odvajati bajtove; broj preostalih znamenki mora biti paran.
BYTECOLLECTION("00 0A FF");
# Result: {0x00, 0x0A, 0xFF}
BYTECOLLECTION("aa, be1-1,fe");
# Result: {0xAA, 0xBE, 0x11, 0xFE}
BYTECOLLECTION(6);
# Result: 6 zero bytesPogreške — Parameter must be a non-empty string; Length must be a multiple of 2; Maximum array length is 2048; Invalid array length. Must be greater than 0 and less than or equal 2048.
UINT16COLLECTION
UINT16COLLECTION stvara collection<uint16> od 1 – 2048 nula, koja se obično popunjava funkcijom PACKVALUE i upisuje u registre Modbus funkcijom MODBUSWBLOCK.
collection<uint16> regs := UINT16COLLECTION(4);
PACKVALUE(regs, 0, BigEndianFloat, 21.5);
PACKVALUE(regs, 2, Uint16, 100);
MODBUSWBLOCK(H, 200, regs);Dostupno — TapHome Next 2026.1.39016+.
Vidi također — Binarni podaci, Funkcije Modbus.
BOOLCOLLECTION
BOOLCOLLECTION stvara collection<bool> od 1 – 2048 vrijednosti FALSE, obično za upis coil registara Modbus funkcijom MODBUSWBLOCK.
collection<bool> coils := BOOLCOLLECTION(8);
SETAT(coils, 0, TRUE);
MODBUSWBLOCK(C, 0, coils);Dostupno — TapHome Next 2026.1.39016+.