Obsah / Utility / TEXTFORM / FormToTextBuf
Zdrojový kód: INCLUDE\UTIL\TEXTFORM.INC, UTIL\TEXTFORM.ASM
Související:
Formátovací řetězec funkce FormToTextBuf | ||
HexSToTextBuf | Zformátování čísla HEX do bufferu, malá písmena | |
HexCToTextBuf | Zformátování čísla HEX do bufferu, velká písmena | |
BinToTextBuf | Zformátování čísla BIN do bufferu | |
OctToTextBuf | Zformátování čísla OCT do bufferu | |
IntToTextBuf | Zformátování čísla INT se znaménkem do bufferu | |
UIntToTextBuf | Zformátování čísla INT bez znaménka do bufferu | |
FltToTextBuf | Zformátování desetinného čísla do bufferu | |
ExpSToTextBuf | Zformátování čísla s exponentem do bufferu, malé "e" | |
ExpCToTextBuf | Zformátování čísla s exponentem do bufferu, velké "E" | |
MixSToTextBuf | Zformátování smíšeného desetinného čísla do bufferu, malé "e" | |
MixCToTextBuf | Zformátování smíšeného desetinného čísla do bufferu, velké "E" | |
FormToTextBufN | Délka formátovaného textu |
FormToTextBuf - Zformátování textu do bufferu
Funkce FormToTextBuf je zastřešením funkcí pro formátování čísel do bufferu. Zformátuje text s argumenty do textového bufferu. Funkce je obdobou funkce printf známé z jazyku C.
|
Na vstupu funkce obsahuje registr EAX zpětnou hodnotu, která je předávána funkci sloužící k načtení hodnoty argumentu. Zpětnou hodnotou bývá zpravidla ukazatel na strukturu popisující objekt, který si vyžádal zformátování textu. Registr EBX obsahuje délku zdrojového textu ke zformátování. Registr ECX obsahuje ukazatel na popisovač národnostních informací NATIONAL. Ke zjištění implicitního popisovače národnostních informací lze použít makro DEFAULT_NAT. Registr EDX obsahuje ukazatel na zdrojový text ke zformátování. Zdrojový text je v kódu UTF-8. Registr ESI obsahuje čítač zbylého místa v cílovém bufferu a registr EDI ukazatel do cílového bufferu.
Registr EBP obsahuje ukazatel na zpětně volanou funkci sloužící k načtení hodnoty argumentu. Na vstupu funkce zpětného volání obsahuje registr EAX zpětnou hodnotu. Registr EBX obsahuje formátovací argumenty FORMPAR (ne ukazatel) spolu s typem požadovaného argumentu. Registr EDX obsahuje index požadovaného DWORD argumentu v rozsahu 0 až 255. Má-li argument větší velikost než DWORD, zabere v zásobníku místo pro více argumentů a registr EDX obsahuje index počátku argumentu zarovnaný na DWORD.
Na výstupu funkce zpětného volání je navracen příznak CY jako indikace chyby neplatného indexu argumentu. V případě této chyby se celá funkce FormToTextBuf ukončí s indikací chyby. Obsah ostatních registrů závisí na typu požadovaného argumentu. Parametr přesnosti nebo šířky je navracen v registru EAX, celé číslo v registrovém páru EDX:EAX, znak Unicode v registru EAX, desetinné číslo v registru ST0 a ukazatel na text v registru EAX, délka textu je obsažena v registru EDX. Obsahy nevyužitých registrů EAX, EBX, ECX a EDX mohou být funkcí zrušeny.
Na výstupu funkce FormToTextBuf je nastaven příznak chyby CY v případě, že funkce zpětného volání navrátila chybu neplatného indexu argumentu. Registry ESI a EDI na výstupu ukazují na novou ukládací pozici. Funkce předpokládá, že koprocesor je v implicitním nastavení - přesnost 64 bitů, zaokrouhlení k nejbližšímu.
|
Funkce používá registry jako lokální proměnné s tímto významem: EAX je přechodný registr, EBX jsou formátovací parametry, ECX je zbývající velikost zdrojového textu, EDX ukazatel zdrojového textu, ESI zbývající místo v cílovém bufferu, EDI ukazatel do cílového bufferu a EBP ukazatel lokálních proměnných v zásobníku. Lokální proměnné s kladným offsetem jsou použity jen pro čtení, jejich obsah není modifikován.
V zásobníku jsou vytvořeny lokální proměnné s následujícím významem. FORMVal je uschovaná zpětná hodnota pro funkci zpětného volání (uschovaný vstupní registr EAX). FORMNat je ukazatel na popisovač národnostních informací (uschovaný vstupní registr ECX). FORMCall je ukazatel na funkci zpětného volání (uschovaný vstupní registr EBP). FORMInx je aktuální index argumentu. FORMExpInx je explicitně zadaný index argumentu. FORMNum je střadač čteného čísla. FORMFlag jsou příznaky (podrobněji dále). FORMForm jsou formátovací parametry.
FORMFlag používají příznaky: FORMFLAG_NUM zahájeno načítání čísla, FORMFLAG_PREC zahájeno načítání přesnosti, FORMFLAG_EXP explicitní index argumentu je platný, FORMFLAG_INXW načíst šířku z argumentů, FORMFLAG_INXP načíst přesnost z argumentů, FORMFLAG_PAR načíst parametr *, FORMFLAG_PSET přesnost byla nastavena.
|
Na začátku funkce jsou uchovány obsahy registrů (některé registry jsou použity jako lokální proměnné s kladným offsetem) a vytvořeno místo v zásobníku pro lokální proměnné. Aktuální index argumentu je vynulován a do registru ECX je připraven čítač znaků zdrojového textu.
|
Testem registru ESI je zkontrolováno zbývající volné místo v cílovém bufferu. Není-li místo pro další znak, funkce se ihned ukončí.
Čítáním registru ECX se zkontroluje, zda je připraven další zdrojový znak. Pokud ne, funkce se opět ihned ukončí. Jinak se ze zdrojového textu (ukazatel EDX) načte další znak.
Není-li dalším znakem znak procenta "%", který je použit jako indikátor začátku formátovací sekvence, znak se uloží do výstupního bufferu beze změny. Čítáním registru ESI se ověří zbývající místo v cílovém bufferu. Pokud dojde k zaplnění cílového bufferu, funkce se ihned ukončí.
|
Je-li dalším znakem znak procenta "%", pokračuje se dále obsluhou zpracování formátovací sekvence. Registr EBX se vynuluje, bude použit jako střadač formátovacích parametrů.
Na začátku smyčky obsluhy znaků formátovací sekvence se čítáním registru ECX zkontroluje, zda je připraven další zdrojový znak. Pokud ne, funkce se ihned ukončí. Jinak se ze zdrojového textu (ukazatel EDX) načte další znak.
Ověří se platnost formátovacího znaku (musí ležet v intervalu 32 až 126) a provede se skok na osbluhu znaku podle tabulky FormTextJumpTab. Pro neplatný znak se obsluha formátovacího řetězce přeruší a znaky se opět začnou ukládat jako běžné znaky.
|
Obsluha znaku "-" nastaví v registru EBX příznak zarovnání textu vlevo.
|
Obsluha znaku "+" nastaví v registru EBX příznak vynuceného znaménka.
|
Obsluha znaku mezery nastaví v registru EBX příznak náhrady kladného znaménka mezerou.
|
Obsluha znaku "~" nastaví v registru EBX příznak zobrazení oddělovačů řádů.
|
Obsluha znaku "@" nastaví v registru EBX příznak centrování textu.
|
Obsluha znaku "#" posune v registru EBX příznaky alternativního formátu. Příznaky FORMFLAG_Alt_b a FORMFLAG_Alt2_b se s příchodem znaků "#" postupně překlápí tak, že čítají znaky "#" v počtu 0, 1, 2 nebo 3.
|
Znak tečky "." je oddělovač pole přesnosti a pole šířky. Pokud v proměnné FORMFlag nebyl dosud nastaven přepínač FORMFLAG_PREC, nebylo zahájeno načítání přesnosti. Příznak se nastaví a voláním funkce FormToTextStopW se ukončí načítání pole šířky.
Byl-li příznak FORMFLAG_PREC nastaven, obsluha načítání přesnosti byla již zahájena. V tom případě se pouze nastavi příznak FORMFLAG_Prec_b indikující, že se použije alternativní přesnost "..".
|
Znak velkého písmene "I" označuje přepínač nastavení velikosti argumentu. Platné přepínače mají tvar "I16", "I32" a "I64", proto je kontrolou registru ECX ověřeno, zda zbývají 2 znaky zdrojového textu a pokud zbývají, jsou další 2 znaky načteny do registru AX.
Jedná-li se o text "I64", je pokračováno obsluhou dlouhé varianty argumentu. Jedná-li se o text "I16", pokračuje se obsluhou krátké varianty argumentu. V případě textu "I32" se pokračuje obsluhou střední varianty argumentu. Obsluha spočívá ve vynulování příznaků krátké a dlouhé varianty argumentu.
V ostatních případech se ukazatel zdrojového textu navrátí za pozici znaku "I" a pokračuje se obsluhou dalších znaků.
|
Číslice "0" se může vyskytnout jen uvnitř čísla. Pokud načítání čísla ještě nebylo zahájeno a ani nebylo zahájeno pole přesnosti, je číslice "0" považována za příznak, nastaví se příznak požadavku doplnění nul před číslo.
Jedná-li se o číslici "1" až "9" nebo o platnou číslici "0", bude provedena obsluha načítání čísla. Nastaví se příznak FORMFLAG_NUM indikující, že bylo zahájeno číslo. Do registru AH je připraven střadač čísla FORMNum. Má-li střadač hodnotu menší než 25, nedojde určitě k přetečení čísla rozměru BYTE a nová číslice je přidána ke střadači instrukcí AAD.
Je-li střadač větší než 25, k přetečení dojde a číslo je omezeno na maximální povolenou hodnotu 255. Je-li střadač roven 25, k přetečení může nebo nemusí dojít. Nová číslice se přidá ke střadači a pokud je nová hodnota střadače menší než 250, došlo k přetečení a číslo je opět omezeno na 255.
|
Obsluha znaku "*" nastaví v registru EBX příznak, že číselný parametr (šířka nebo přesnost) bude načten z argumentu.
|
Obsluha znaku "l" nebo "L" zapne v registru EBX příznak dlouhého argumentu a vypne příznak krátkého argumentu.
|
Obsluha znaku "h" nebo "H" vypne v registru EBX příznak dlouhého argumentu a zapne příznak krátkého argumentu.
|
Znak "$" označuje explicitní index argumentu. Do registru AL je připraven střadač číselného parametru a střadač je vynulován (spolu s příznakem zahájení číselného argumentu). Index s hodnotou 0 není platný a ignoruje se. Pro hodnotu 1 a více se index dekrementací převede na bázi 0.
Pokud nebyl nastaven příznak "*" načítání číselného parametru z argumentu FORMFLAG_PAR, má index význam explicitního indexu argumentu. Index se uloží do proměnné FORMExpInx a nastaví se příznak FORMFLAG_EXP.
Pokud byl příznak "*" nastaven, bude z argumentu načten parametr šířky nebo přesnosti. Příznak FORMFLAG_PAR se vynuluje a testem příznaku FORMFLAG_PREC se rozliší, zda je načítán parametr šířky nebo přesnosti a podle výsledku se index uloží do registrů BH nebo BL a nastaví se příznaky FORMFLAG_INXW nebo FORMFLAG_INXP+FORMFLAG_PSET.
|
Znaky "d", "D" a "i" jsou indikátory celého dekadického čísla se znaménkem. Pro znak "D" se nastaví příznak velkého písmene a dále se pokračuje společnou obsluhou.
Do registru EBX se uloží příznak celočíselného dekadického čísla se znaménkem FORMTYPE_Int. Voláním funkce FormToTextGet se do registrového páru EDX:EAX načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 1. Voláním funkce IntToTextBuf se číslo zformátuje do výstupního bufferu.
|
Znaky "u" a "U" jsou indikátory celého dekadického čísla bez znaménka. Pro znak "U" se nastaví příznak velkého písmene a dále se pokračuje společnou obsluhou.
Do registru EBX se uloží příznak celočíselného dekadického čísla bez znaménka FORMTYPE_UInt. Voláním funkce FormToTextGet se do registrového páru EDX:EAX načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 1. Voláním funkce UIntToTextBuf se číslo zformátuje do výstupního bufferu.
|
Znaky "b" a "B" jsou indikátory celého binárního čísla bez znaménka. Pro znak "B" se nastaví příznak velkého písmene a dále se pokračuje společnou obsluhou.
Do registru EBX se uloží příznak celočíselného binárního čísla bez znaménka FORMTYPE_Bin. Voláním funkce FormToTextGet se do registrového páru EDX:EAX načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 1. Voláním funkce BinToTextBuf se číslo zformátuje do výstupního bufferu.
|
Znaky "o" a "O" jsou indikátory celého oktalového čísla bez znaménka. Pro znak "O" se nastaví příznak velkého písmene a dále se pokračuje společnou obsluhou.
Do registru EBX se uloží příznak celočíselného oktalového čísla bez znaménka FORMTYPE_Oct. Voláním funkce FormToTextGet se do registrového páru EDX:EAX načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 1. Voláním funkce OctToTextBuf se číslo zformátuje do výstupního bufferu.
|
Znak "x" je indikátor celého hexadecimálního čísla bez znaménka s malými písmeny "a" až "f".
Do registru EBX se uloží příznak celočíselného hexadecimálního čísla bez znaménka FORMTYPE_Hex. Voláním funkce FormToTextGet se do registrového páru EDX:EAX načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 1. Voláním funkce HexSToTextBuf se číslo zformátuje do výstupního bufferu (s použitím malých písmen "a" až "f").
|
Znak "X" je indikátor celého hexadecimálního čísla bez znaménka s velkými písmeny "A" až "F".
Do registru EBX se uloží příznak celočíselného hexadecimálního čísla bez znaménka FORMTYPE_Hex a příznak velkého písmene FORMTYPE_Cap. Voláním funkce FormToTextGet se do registrového páru EDX:EAX načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 1. Voláním funkce HexCToTextBuf se číslo zformátuje do výstupního bufferu (s použitím velkých písmen "A" až "F").
|
Znaky "c" a "C" jsou indikátory jednoho znaku v Unicode kódu. Pro znak "C" se nastaví příznak velkého písmene a dále se pokračuje společnou obsluhou.
Do registru EBX se uloží příznak znaku Unicode FORMTYPE_Char. Voláním funkce FormToTextGet se do registru EAX načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Voláním funkce CharUTF8Write se znak uloží do výstupního bufferu v kódu UTF-8.
|
Znaky "s" a "S" jsou indikátory textu v kódu UTF-8. Pro znak "S" se nastaví příznak velkého písmene a dále se pokračuje společnou obsluhou.
Do registru EBX se uloží příznak textu FORMTYPE_String. Voláním funkce FormToTextGet se do registru EAX načte ukazatel na text v kódu UTF-8 a do registru EDX délka textu v bajtech. V případě neplatného indexu argumentu se funkce ukončí s chybou.
Voláním funkce FormToTextLim se délka omezí podle zadaného argumentu přesnosti a následně se délka omezí volným místem v cílovém bufferu.
Text se zkopíruje do výstupního bufferu. Nejdříve rychlá kopie po čtyřslovech a poté kopie zbytku textu po jednotlivých bajtech.
|
Znaky "f" a "F" jsou indikátory desetinného čísla bez exponentu. Pro znak "F" se nastaví příznak velkého písmene a dále se pokračuje společnou obsluhou.
Do registru EBX se uloží příznak desetinného čísla bez exponentu FORMTYPE_Float. Voláním funkce FormToTextGet se do registru ST0 načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 6. Voláním funkce FltToTextBuf se číslo zformátuje do výstupního bufferu. Po návratu z funkce se číslo uvolní ze zásobníku koprocesoru instrukcí ffreep.
|
Znak "e" je indikátor desetinného čísla s exponentem s malým "e" použitým jako oddělovač exponentu.
Do registru EBX se uloží příznak desetinného čísla s exponentem FORMTYPE_Exp. Voláním funkce FormToTextGet se do registru ST0 načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 6. Voláním funkce ExpSToTextBuf se číslo zformátuje do výstupního bufferu s použitím malého písmene "e" jako oddělovač exponentu. Po návratu z funkce se číslo uvolní ze zásobníku koprocesoru instrukcí ffreep.
|
Znak "E" je indikátor desetinného čísla s exponentem s velkým "E" použitým jako oddělovač exponentu.
Do registru EBX se uloží příznak desetinného čísla s exponentem FORMTYPE_Exp a příznak velkého písmene FORMTYPE_Cap. Voláním funkce FormToTextGet se do registru ST0 načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 6. Voláním funkce ExpCToTextBuf se číslo zformátuje do výstupního bufferu s použitím velkého písmene "E" jako oddělovač exponentu. Po návratu z funkce se číslo uvolní ze zásobníku koprocesoru instrukcí ffreep.
|
Znak "g" je indikátor desetinného čísla ve smíšeném tvaru s malým "e" použitým jako oddělovač exponentu.
Do registru EBX se uloží příznak desetinného čísla ve smíšeném tvaru FORMTYPE_Mix. Voláním funkce FormToTextGet se do registru ST0 načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 6. Voláním funkce MixSToTextBuf se číslo zformátuje do výstupního bufferu s použitím malého písmene "e" jako oddělovač exponentu. Po návratu z funkce se číslo uvolní ze zásobníku koprocesoru instrukcí ffreep.
|
Znak "G" je indikátor desetinného čísla ve smíšeném tvaru s velkým "E" použitým jako oddělovač exponentu.
Do registru EBX se uloží příznak desetinného čísla ve smíšeném tvaru FORMTYPE_Mix a příznak velkého písmene FORMTYPE_Cap. Voláním funkce FormToTextGet se do registru ST0 načte hodnota argumentu. V případě neplatného indexu argumentu se funkce ukončí s chybou. Pokud nebyla zadána přesnost, nastaví se do registru BL implicitní přesnost 6. Voláním funkce MixCToTextBuf se číslo zformátuje do výstupního bufferu s použitím velkého písmene "E" jako oddělovač exponentu. Po návratu z funkce se číslo uvolní ze zásobníku koprocesoru instrukcí ffreep.
|
FormToTextLim je interní funkce pro funkce FormToTextBuf a FormToTextBufN. Funkce omezí délku textu argumentu "s" a "S" podle parametru přesnosti.
Je-li požadovaná přesnost v registru BL rovna nule, délka textu nebude omezena a funkce se ihned ukončí.
Není-li přesnost v registru BL nulová, představuje maximální počet znaků, které mají být uloženy do výstupního bufferu. Vzhledem k použití kódu s nestejnou délkou znaků UTF-8 je nutné zjistit délku textu v bajtech.
Ze vstupního bufferu se voláním funkce CharUTF8Read postupně načítají jednotlivé znaky textu a to buď do dosažení konce zdrojového textu nebo do načtení BL znaků. Po nalezení konce textu se z rozdílu zdrojové adresy zjistí délka textu v bajtech.
|
FormToTextStopW je interní funkce pro funkce FormToTextBuf a FormToTextBufN. Funkce ukončí rozbor parametru šířky.
Na začátku se do registru AL načte obsah střadače čísla FORMNum a střadač se vynuluje. Je-li nastaven příznak FORMFLAG_INXW, bude údaj šířky načten z argumentu s explicitním indexem a registr BH již obsahuje index argumentu, funkce se ukončí.
Nejedná-li se o načtení parametru z argumentu, je úda šířky uložen do registru BH jako nově zadaná šířka. Není-li nastaven příznak FORMFLAG_PAR (přepínač "*"), je načtené číslo přímo údajem šířky a funkce může být ukončena.
Je-li příznak FORMFLAG_PAR nastaven, bude se parametr načítat z argumentů. Do registru BH se připraví index dalšího argumentu FORMInx, index se inkrementuje a nastaví se příznak FORMFLAG_INXW požadující načtení parametru z argumentu.
Na závěr funkce se vynulují příznaky FORMFLAG_PAR (požadavek k načtení parametru z argumentů) a FORMFLAG_NUM (příznak zahájení čísla).
|
FormToTextStopP je interní funkce pro funkci FormToTextGet. Funkce ukončí rozbor parametru přesnosti.
Je-li nastaven příznak FORMFLAG_INXP, bude údaj přesnosti načten z argumentu s explicitním indexem (index je již obsažen v registru BL), funkce se ihned ukončí.
Nejedná-li se o načtení parametru z argumentu, je údaj FORMNum načten do registru BL jako nově zadaná přesnost a nastaví se příznak FORMFLAG_PSET indikující, že byla zadána přesnost.
Není-li nastaven příznak FORMFLAG_PAR (přepínač "*"), je načtené číslo přímo údajem přesnosti a funkce může být ukončena.
Je-li příznak FORMFLAG_PAR nastaven, bude se parametr načítat z argumentů. Do registru BL se připraví index dalšího argumentu FORMInx, index se inkrementuje a nastaví se příznak FORMFLAG_INXP (požadující načtení parametru z argumentu) a příznak FORMFLAG_PSET (indikující, že byla zadána přesnost).
|
FormToTextGet je interní funkce pro funkce FormToTextBuf a FormToTextBufN. Funkce načte jeden argument. Argument je navrácen v registrech EAX, EDX nebo ST0. Navrácený příznak CY indikuje neplatný index argumentu. Příznak NZ indikuje, že nemá být implicitní přesnost.
Funkce nejdříve ukončí právě prováděný rozbor. Podle nastavení příznaku FORMFLAG_PREC ukončí zavoláním funkce FormToTextStopW rozbor šířky nebo zavoláním funkce FormToTextStopP rozbor přesnosti.
|
Je-li nastaven příznak FORMFLAG_INXW, bude se parametr šířky načítat z argumentů. Do registru EDX se připraví z registru BH index argumentu parametru šířky. Přechodně se vynuluje typ argumentu a tím se nastaví typ FORMTYPE_Par (hardcoded 0).
Zavoláním funkce FORMCall se zpětnou hodnotou FORMVal se z argumentů načte parametr šířky. V případě neplatného indexu argumentu (je navrácen příznak CY) se funkce ihned ukončí. Navrácený argument se omezí na hodnotu 255 a uloží do registru BH.
|
Je-li nastaven příznak FORMFLAG_INXP, bude se parametr přesnosti načítat z argumentů. Do registru EDX se připraví z registru BL index argumentu parametru přesnosti. Přechodně se vynuluje typ argumentu a tím se nastaví typ FORMTYPE_Par (hardcoded 0).
Zavoláním funkce FORMCall se zpětnou hodnotou FORMVal se z argumentů načte parametr přesnosti. V případě neplatného indexu argumentu (je navrácen příznak CY) se funkce ihned ukončí. Navrácený argument se omezí na hodnotu 255 a uloží do registru BL.
|
Je-li nastaven příznak FORMFLAG_EXP, je index argumentu načten z FORMExpInx. Není-li nastaven, je použit implicitní aargument z FORMInx. Pomocí funkce FormGetArgLen je zjištěna délka argumentu a posunut index argumentu FORMInx.
|
Nyní je již může načíst hodnota argumentu. Do registru EAX se připraví zpětná hodnota a voláním funkce FORMCall se z argumentů načte argument s indexem EDX. Je-li navrácen příznak chyby indexu argumentu CY, funkce se ihned ukončí. Testem příznaku FORMFLAG_PSET je nastaven příznak ZF indikující, zda byl nastaven parametr přesnosti.
Obsah / Utility / TEXTFORM / FormToTextBuf