Obsah / Utility / TEXT / TextWriteCP
Zdrojový kód:
INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM
TextWriteCP - Zápis
textu do bufferu v dané kódové stránce
Funkce TextWriteCP zapíše do
bufferu text v dané kódové stránce.
; -----------------------------------------------------------------------------
; Write text into buffer with given code page
; -----------------------------------------------------------------------------
; INPUT: AX = code page of destination buffer
; EBX = pointer to TEXT
; ECX = size of destination buffer (it is ignored if EDI = NULL)
; EDX = invalid character (0 = use similar ASCII or default char)
; EDI = pointer to destination buffer (NULL = get size of data)
; OUTPUT: EAX = size of data in destination buffer
; -----------------------------------------------------------------------------
; ------------- Push registers
TextWriteCP: push ebx ; push EBX
push ecx ; push ECX
push esi ; push ESI
push ebp ; push EBP
; ------------- Convert text
mov ebp,ecx ; EBP <- size of destination buffer
mov esi,[ebx] ; ESI <- text data
mov ecx,[esi+TEXT_Length] ; ECX <- text length
add esi,TEXT_Text ; ESI <- start of text
mov ebx,eax ; BX <- destination code page
mov ax,CP_UTF8 ; AX <- source codepage UTF-8
call CharTrans ; convert text
; ------------- Pop registers
pop ebp ; pop EBP
pop esi ; pop ESI
pop ecx ; pop ECX
pop ebx ; pop EBX
ret
|
Na vstupu funkce obsahuje registr AX
číslo požadované kódové stránky, EBX
ukazatel na textovou proměnnou, ECX velikost cílového bufferu
(údaj se ignoruje, pokud je EDI = NULL), EDX náhradní znak v
kódu UNICODE pro neplatný znak (nebo 0, použije se podobný
nebo implicitní znak) a EDI obsahuje ukazatel na cílový
buffer. Pokud je ukazatel na cílový buffer nulový, funkce
pouze navrátí požadovanou velikost cílového bufferu. Na
výstupu funkce navrátí v registru EAX velikost dat uložených
do cílového bufferu nebo požadovanou velikost bufferu (je-li
adresa bufferu nulová).
K převodu textu z kódu UTF-8, který je
interním kódem textů, do cílové kódové stránky se
použije funkce CharTrans.
Obsah / Utility / TEXT / TextWriteCP