Obsah / Utility / TEXT / TextNew
Zdrojový kód: INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM
TextNew - Vytvoření nových dat textového řetězce
Funkce TextNew vytvoří nová data textového řetězce. Jedná se o interní funkci, která je volána ostatními funkcemi obsluhy textů. Funkce neodpojuje případná stará data, proto nesmí být k proměnné žádná data připojena nebo mohou být připojena konstantní data (jako například prázdný text).
|
Na vstupu funkce obsahuje registr EAX požadovanou velikost textu v datovém bufferu (v bajtech, bez hlavičky dat textového řetězce) a registr EBX obsahuje ukazatel na textovou proměnnou TEXT. V případě chyby nedostatku paměti je navrácen příznak chyby CY, v tom případě není obsah proměnné textového řetězce změněn.
|
Funkce si uchová do registru ECX požadovanou velikost textu Do registru EAX připraví velikost datového bufferu, tj. velikost textu včetně hlavičky dat textové proměnné. Pomocí makra TEXTBUFALLOC je alokován nový datový buffer. V případě chyby paměti je funkce ukončena s navrácením chybového příznaku CY.
|
Adresa nově vytvořeného datového bufferu je uložena do proměnné textového řetězce [EBX]. Je provedena inicializace datového bufferu spočívající v tom, že referenční čítač se nastaví na hodnotu 1 (proměnná je tedy jediným vlastníkem dat textového řetězce) a délka se nastaví podle registru ECX.
Do registru EAX je navrácena pžadovaná délka textu a registr ECX je navrácen ze zásobníku.
Obsah / Utility / TEXT / TextNew