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

Obsah / Utility / TEXT / TextAddLongDate

Zdrojový kód: INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM


TextAddLongDate - Přidání data v dlouhém tvaru na konec textu

Funkce TextAddLongDate přidá formátované datum v dlouhém tvaru na konec textu (tj. např. "31. prosince 2008"). Datum je zadáno jako absolutní čas v registrovém páru EDX:EAX (tj. počet stovek nanosekund od 1.1. roku 1).


; -----------------------------------------------------------------------------
;                     Add long date format to end of text
; -----------------------------------------------------------------------------
; INPUT:	EDX:EAX = absolute time (100-nanosec from 1/1/1 BCE 0:00)
;		EBX = pointer to destination TEXT variable
;		ECX = pointer to nationality descriptor NATIONAL (NULL=default)
; OUTPUT:	CY = memory error (text not changed)
; -----------------------------------------------------------------------------

Na vstupu funkce obsahuje registrový pár EDX:EAX absolutní čas, tj, počet stovek nanosekund od 1.1. roku 1. Registr EBX obsahuje ukazatel na cílovou textovou proměnnou, do které se zformátovaný text uloží. Registr ECX obsahuje ukazatel na popisovač národnostních informací NATIONAL. Je-li ukazatel nulový (tj. obsahuje NULL), použije se implicitní popisovač národnostních informací. V případě chyby paměti je navrácen chybový příznak CY a obsah cílové textové proměnné se nezmění.


; ------------- Push registers

TextAddLongDate:push	ecx		; push ECX
		push	esi		; push ESI

; ------------- Det default nationality (-> ECX)

		or	ecx,ecx		; default nationality?
		jnz	TextAddLongDat2	; nationality is valid
		DEFAULT_NAT ecx		; ECX <- get default nationality

Po úschově registrů se do registru ECX připraví implicitní popisovač národnostních informací pomocí funkce DEFAULT_NAT v případě, že ukazatel byl při vstupu do funkce nulový.


; ------------- Format text

TextAddLongDat2:lea	esi,[ecx+NAT_LongDate] ; ESI <- long date string
		call	TextAddAbsTime	; format text

; ------------- Pop registers

		pop	esi		; pop ESI
		pop	ecx		; pop ECX
		ret

Text je zformátován pomocí funkce TextAddAbsTime, jako formátovací řetězec je do registru ESI připraven ukazatel na formátovací řetězec data v dlouhém tvaru (tj. "d/ MMMM yyyy").


Obsah / Utility / TEXT / TextAddLongDate