Obsah / Utility / TEXT / TextTrimLeft
Zdrojový kód: INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM
TextTrimLeft - Ořezání textu zleva
Funkce TextTrimLeft odstraní nevýznamné mezery a řídicí znaky (tj. znaky s kódem 32 a menším) ze začátku textu.
|
Na vstupu funkce obsahuje registr EBX ukazatel na textovou proměnnou. V případě chyby paměti funkce navrátí příznak chyby CY.
|
Po úschově registrů se připraví do registru ESI ukazatel na začátek textu řetězce a do registru ECX délka textu v bajtech. V případě nulové délky textu se funkce ihned ukončí, příznak chyby je přitom vynulován NC.
|
Textový řetězec se prochází od začátku bajt po bajtu a vyhledává se první platný znak textu, tj. bajt s hodnotou vyšší než 32. Využívá se přitom skutečnosti, že při kódování textu UTF-8 jsou znaky s hodnotou 0 až 7Fh uloženy přímo jako jednobajtové kódy. Všechny ostatní bajty kódu UTF-8 jsou vždy 80h a více, proto postačí vyhledávat přímo bajty s hodnotou 0 až 32 bez dalšího rozlišování kódu UTF-8.
|
Po nalezení prvního platného znaku (s kódem vyšším než 32) nebo po dosažení konce řetězce je do registru ECX připraven počet přeskočených nevýznamných znaků. Je-li tento počet nenulový, jsou nevýznamné znaky zrušeny funkcí TextDelStart.
Obsah / Utility / TEXT / TextTrimLeft