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

Obsah / Utility / TEXT / TextSubLangGet

Zdrojový kód: INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM


TextSubLangGet - Vyhledání textu pro daný jazyk a pod-jazyk

Funkce TextSubLangGet vyhledá ve vícejazyčném textu text pro daný jazyk a pod-jazyk.


; -----------------------------------------------------------------------------
;  Find text in multi-language text array in given language and sub-language
; -----------------------------------------------------------------------------
; INPUT:	AX = language identifier LANG
;		EBX = pointer to multi-language text array LANGTEXT
; OUTPUT:	CY = language not found (EBX not changed)
;		EBX = pointer to text variable TEXT (only if NC)
; -----------------------------------------------------------------------------

Na vstupu funkce obsahuje registr AX identifikátor požadovaného jazyku a pod-jazyku LANG, registr EBX obsahuje ukazatel na první položku pole vícejazyčných textů LANGTEXT (první položka obsahuje počet položek v poli). Funkce navrátí v registru EBX ukazatel na položku s nalezeným požadovaným identifikátorem jazyku (lze s ní pracovat jako s běžnou textovou proměnnou). Není-li taková položka v poli nalezena, navrátí funkce příznak chyby CY a obsah registru EBX zůstane nezměněn.


; ------------- Push registers

TextSubLangGet:	push	ecx		; push ECX
		push	ebx		; push EBX

; ------------- Prepare registers

		movzx	ecx,word [ebx+LANGTEXT_Num] ; ECX<-number of languages

; ------------- Find language

TextSubLangGet2:cmp	ax,[ebx+LANGTEXT_Lang] ; check language identifier
		je	TextSubLangGet4	; language found OK
		add	ebx,byte LANGTEXT_size ; EBX <- next string
		loop	TextSubLangGet2	; check next language

; ------------- Language not found

		stc			; set error flag
		pop	ebx		; pop EBX
		pop	ecx		; pop ECX
		ret

; ------------- Language has been found (here is NC)

TextSubLangGet4:pop	ecx		; destroy EBX
		pop	ecx		; pop ECX
		ret

Po úschově registrů se do registru ECX připraví počet položek v poli vícejazyčných textů. Pole je procházeno po jednotlivých položkách a pokud je nalezen text s hledaným jazykovým identifikátorem, funkce je ukončena s příznakem NC, registr EBX ukazuje na nalezenou položku. Dosáhne-li funkce konce pole, obnoví se původní registr EBX a funkce se ukončí s příznakem chyby CY.


Obsah / Utility / TEXT / TextSubLangGet