Jak převést ascii cód znaku v usint na string ?
Jiri Dvorak:
Mám pole usintu ve kterém mám číselne kódy znaků a potřebuji je převést na string.
Jediné řešené na které jsem přišel je vytvořit pointer to string a do nej vložit počáteční adresu,
....
VAR
RxData : array[0..5] of usint := [84,101,115,116,0];
PntStr : ptr_to string;
Str : String[4];
END_VAR
PntStr := adr(RxData[0]);
Str := PntStr^;
což funguje ... ale ..
Pavel Sovička:
Programovací jazyk v příkladu vypadá jako strukturovaný text. Podle konkrétního prostředí (já znám Codesys 2) by mohly být k dispozici konverzní funkce. V nápovědě prostředí bych tedy zkusil pohledat "Type conversion", měla by to být samostatná kategorie funkcí a někde v ní by mohla být funkce "uint_to_string()", která toto korektně řeší. Popř. by mohla být k dispozici "int_to_string()" a jelikož rozsah "usint" je jen podmnožinou "int" tak by to stále mělo fungovat správně.
Jiri Dvorak:
int_to_string k dispozici je, ale ten proste vem cislo trabas 97 a z int udela string se znaky 97
ja potebuju dle ascii prevest "97" na "a"
a ano je to ST-cko
Jakub Steklý:
možná trochu zaostale, ale jestli je potřebovat převádět pouze několik písmen/čísel tak je možná rychlejší si napsat dekodér...
Kdysi jsem si ho takhle psal na dekódování znaků ASCII ze stringu, ale pouze čísla, kterých je méně ;)
Jiri Dvorak:
od externi zařízení mi příjde toto:
Cmd#12#Heslo#12.1#12.3#12.4;
a to potřebuji rozbrourat na:
TOutCmdPrs : struct
Cmd : string[10];
Id : usint;
Pswd : string[10];
RValues : array[0..CTOutCmdPrs_NmVl] of real;
end_struct;
ale v podstatě, vyřešeno, použil jsem tu vopičárnu s tím poiterem ....
Navigace
[0] Index zpráv
[#] Další strana