Obsah / Utility / TEXT / TextDelChar
Zdrojový kód:
INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM
TextDelChar -
Zrušení znaku z textu
Funkce TextDelFrom zruší
část textu od dané pozice po konec textu.
; -----------------------------------------------------------------------------
; Delete character from text
; -----------------------------------------------------------------------------
; INPUT: EBX = pointer to TEXT
; EDX = character position (it may be out of range)
; OUTPUT: CY = memory error (text not changed)
; NOTES: It checks validity of character position.
; Character is in UTF-8 code and it can be multibyte.
; -----------------------------------------------------------------------------
; ------------- Push registers
TextDelChar: push ecx ; push ECX
; ------------- Check minimal character position
or edx,edx ; check minimal character position
js TextDelChar4 ; position is not valid
; ------------- Get length of character
mov ecx,edx ; ECX <- current position
call TextNext ; shift position to next character
sub edx,ecx ; EDX <- length of character
; ------------- Delete character
xchg edx,ecx ; ECX <- length, EDX <- old position
call TextDelete ; delete character
; ------------- Pop registers
TextDelChar4: pop ecx ; pop ECX
ret
|
Na vstupu funkce obsahuje registr EBX
ukazatel na textovou proměnnou. V registru EDX je pozice
(offset) rušeného znaku. V případě chyby paměti funkce
navrátí příznak chyby CY a text zůstane nezměněn. Funkce
omezuje pozici v textu do platných rozsahů.
Funkce testem registru EDX ověří, zda
ukazatel pozice neleží před začátkem textu. Pokud ano,
funkce se ukončí bez další operace.
Do registru ECX se uchová ukazatel pozice
a voláním funkce TextNext se ukazatel posune na další znak
textu. Do registru EDX se uloží délka textu. Voláním funkce
TextDelete se znak z textu zruší. Jestliže ukazoval ukazatel
pozice na začátku funkce za konec textu, bude délka rušeného
textu nekladné číslo, což bude funkcí TextDelete
obsloužené správně.
Obsah / Utility / TEXT / TextDelChar