Funkce _StrPut slouží k rychlému uložení parametrů P1, P2 až Pn do řetězce.
Parametry mohou být typu Byte, Char, Word, Integer, LongInt, Real, Date, DateTime a String. Opakem procedury _StrPut je StrGet. Místo procedury _StrPut lze také používat funkci StrPut.
Funkce hlásí chybu v rozsahu v případě, že celkový počet vkládaných znaků překročí 255 znaků.
Typ Date zabere 6 znaků, typ DateTime zabere 12 znaků.
Neukládejte výsledek funkce do řetězce typu StringZ. Tento řetězec je ukončován binární nulou (#0) a tento znak se může ve výsledném řetězci objevit!
Při použití proměnné typu String v parametru Px, zabere ve Str tolik místa, jaká je jeho dimenze. Místa v pravo budou doplněna znakem #0:
dim S : String[20] { zabere dvacet míst }
Použijete-li řetězec vytvořený pomocí funkce, nebo řetězce v parametru sečtete, zabere takto vytvořený řetězec ve Str pouze svou délku:
_RightSP(S, 10) { zabere deset míst }
Pozor! Použijete-li místo proměnných konstanty, provede program optimalizaci podle jejich velikostí:
StrPut(Rec, 10, 90, 900) { vložení Byte(10), Byte(90) a Word(900) }
Příklad:
procedure TestStrPut dim a : String[5]; dim b : String[7]; dim c : Byte; dim d : Word; dim s : String; a := "a"; b := "bb"; c := 1; d := 5; s := _StrPut(a,b,c,d,a+b,900,5+1,"ABC"); endproc
a | b | c | d | a+b | 900 | 6 | ABC | ||||||||||||||||
61 | 00 | 00 | 00 | 00 | 62 | 62 | 00 | 00 | 00 | 00 | 00 | 01 | 00 | 05 | 61 | 62 | 62 | 03 | 84 | 06 | 41 | 42 | 43 |
Příklad:
dim Rec : String; dim B : Byte; dim W : Word; dim R : Real; dim LI : LongInt; dim D : Date; dim Ch : Char; dim S5 : String[5]; dim S10 : String[10]; B := 10; Ch := "L"; I := -90; W := 7800; LI := 800000; R := -1345.98; S5 := "ABCDE"; S10 := "abcdefghij"; StrPut(Rec, B, Ch, I, W, LI, R, S5, S10) { Stejný výsledek (ale pomaleji) získáte: } Rec := _Chr(B) + Ch + _ChrI(I) + _ChrW(W) + _ChrLI(LI) + _ChrR(R) + S5 + S10;
Podívejte se na: Práce s řetězci