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