Obsah / Utility / TEXT / TextInitBuf
Zdrojový kód: INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM
TextInitBuf - Inicializace textového řetězce bufferem v kódu UTF-8
Funkce TextInitBuf inicializuje textovou proměnnou textem v bufferu s kódem UTF-8.
|
Funkce TextInitBuf inicializuje novou textovou proměnnou, na niž ukazuje ukazatel v registru EBX, textem z bufferu v kódu UTF-8. Registr EDX obsahuje ukazatel na buffer s textem, registr ECX obsahuje délku textu v bufferu v bajtech. Pokud dojde k chybě paměti, funkce navrátí příznak chyby CY a textová proměnná bude inicializována na prázdný text. Inicializační text v bufferu by neměl obsahovat bajty 0FEh a 0FFh, které jsou používány na detekci little-endian a big-endian a v kódu UTF-8 se nepoužívají.
|
Pomocí funkce TextNew je alokován nový datový buffer o délce textu podle původního obsahu registru ECX. Pokud nastane chyba paměti, funkce se ukončí s chybovým kódem CY. Pro tento případ je proměnná nejdříve inicializována na prázdný text EmptyTextData.
|
Po úspěšné alokaci bufferu se inicializační text zkopíruje do datového bufferu. Ukládací adresa je zjištěna z ukazatele na data textové proměnné (načteného z textové proměnné [EBX]) posunutého na začátek textu v datech textového řetězce. Přesun se provede nejdříve po dvojslovech a poté se přesune zbylá část v posledním dvojslovu po bajtech.
Obsah / Utility / TEXT / TextInitBuf