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

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