Tvůrce webu je i pro tebe! Postav třeba web. Bez grafika. Bez kodéra. Hned.
wz

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