Obsah / Utility / TEXT / TextLast, TextPrev
Zdrojový kód: INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM
TextLast - Posun ukazatele textu na poslední znak textu
Funkce TextLast posune ukazatel v textu na poslední znak textu.
|
Na vstupu funkce obsahuje registr EBX ukazatel na textovou proměnnou, ve které se ukazatel pozice nastavuje. Na výstupu funkce obsahuje registr EDX offset posledního znaku v textu. Pokud je text prázdný (nebo obsahuje pouze detekční bajty), navrátí funkce nastavený příznak chyby CY a registr EDX ukazuje na začátek textu.
Funkce přednastaví obsah registru na velkou hodnotu a pokračuje funkcí TextPrev, která ukazatel posune na poslední znak v textu.
TextPrev - Posun ukazatele textu na předešlý znak textu
Funkce TextPrev posune ukazatel v textu na předešlý znak textu.
|
Na vstupu funkce obsahuje registr EBX ukazatel na textovou proměnnou, ve které se ukazatel pozice nastavuje. Registr EDX obsahuje vstupní ukazatel pozice (offset v textu), ukazatel může být mimo platný rozsah znaků. Na výstupu funkce obsahuje registr EDX offset předešlého znaku v textu. Pokud není k dispozici žádný předešlý znak, navrátí funkce nastavený příznak chyby CY a registr EDX ukazuje na začátek textu.
|
Do registru ESI se připraví ukazatel na datový buffer textu a do registru ECX délka textu. Porovnáním délky se zadanou výchozí pozicí se ověří, zda zadaná výchozí pozice leží mimo platný rozsah.
|
Pokud ukazatel pozice v registru EDX dosáhl nulové pozice, funkce se ukončí s chybou. Jinak se ukazatel pozice v registru EDX sníží o 1. Do registru AL se načte bajt textu z dané pozice. Pokud má hodnotu 0FEh nebo 0FFh, jedná se o detekční bajt, který bude přeskočen, funkce pokračuje posunem na předešlou pozici v textu. Jedná-li se o bajt, jehož nejvyšší 2 bity mají hodnotu 80h, jsou to vnitřní datové bajty znaku a funkce také pokračuje posunem na předešlý znak. Jinak byl nalezen začátek předešlého platného znaku a funkce se úspěšně ukončí.
|
Pokud byla pozice textu na začátku funkce neplatná, pokračuje se rozlišením, zda ukazatel ukazuje za konec textu nebo před začátek textu. Pokud ukazuje před začátek textu, nastaví se ukazatel na začátek textu a funkce se ukončí s nastaveným příznakem chyby CY. Pokud ukazuje ukazatel textu za konec textu, nastaví se pozice textu na konec textu (tj. délka textu) a funkce pokračuje posunem na předešlou pozici.
Obsah / Utility / TEXT / TextLast, TextPrev