Macros de l'Easy Code GoAsm (tots els projectes)


Algunes macros d'utilitat es poden utilitzar als projectes de l'Easy Code (visuals i clàssics) simplement marcant l'opció Macros de l'Easy Code a les Propietats del projecte. Els seus noms són acolorits com a paraules reservades de l'Easy Code (vegeu el menú Configuració) i podeu utilitzar-les quan vulgueu al llarg de tot el codi. Aquestes macros, que es troben al fitxer ECMacros.asm de la subcarpeta Macros de l'Easy Code, tenen la sintaxi següent:

Color (byRed, byGreen, byBlue)

Els arguments byRed, byGreen, byBlue han de ser valors de 8 bits (DB). Torna un color RGB (un valor de 32 bits o DD) al registre Eax.

Exemple:

Color (0AH, 0BH, 0CH)

Torna 000C0B0AH al registre Eax


HiByte (wValue)

L'argument wValue ha de ser un valor de 16 bits (DW). Torna el byte alt (valor de 8 bits o DB) de wValue al registre Al.

Exemple:

HiByte (0C0AH)

Torna 0CH al registre Al


HiWord (dwValue)

L'argument dwValue ha de ser un valor de 32 bits (DD). Torna la paraula alta (valor de 16 bits o DW) de dwValue al registre Ax.

Exemple:

HiWord (000C000AH)

Torna 000CH al registre Ax


LoByte (wValue)

L'argument wValue ha de ser un valor de 16 bits (DD). Torna el byte baix (valor de 8 bits o DB ) de wValue al registre Al.

Exemple:

LoByte (0C0AH)

Torna 0AH al registre Al


LoWord (dwValue)

L'argument dwValue ha de ser un valor de 32 bits (DD). Torna la paraula baixa (valor de 16 bits o DW) de dwValue al registre Ax.

Exemple:

LoWord (000C000AH)

Torna 000AH al registre Ax


MakeWord (byLow, byHigh)

Els arguments byLow i byHigh han de ser valors de 8 bits (DB). Torna el valor resultant de 16 bits (DW) al registre Ax.

Exemple:

MakeWord (0CH,0AH )

Torna 0A0CH al registre Ax


MakeLong (wLow, wHigh)

Els arguments wLow i wHigh han de ser valors de 16 bits (DW). Torna la doble paraula resultant (DD) al registre Eax.

Exemple:

MakeLong (0A0BH,0C0DH

Torna 0C0D0A0BH al registre Eax


Move (dwValue1, dwValue2)

Els arguments dwValue1 i dwValue2 han de ser valors de 32 bits (DD), variables o posicions de memòria.

Exemple:

Move (dwMemPos1, dwMemPos2)

Mou el valor de la variable o posició de memòria indicada per dwMemPos2 a la variable o posició de memòria indicada per dwMemPos1.

Aquesta macro no torna cap valor.


Return
(dwValue)

L'argument dwValue ha de ser un valor de 32 bits (DD). Carrega el valor dwValue al regsitre Eax i torna d'un procediment.

Exemple:

Return (TRUE)

Carrega el registre Eax amb el valor TRUE (1) i torna.


Date (lpszBuf)

L'argument lpszBuf ha de ser l'adreça efectiva d'un buffer.

Exemple:

Date (lpszDate)

El buffer lpszDate s'omplirà amb una cadena de text ANSI que contindrà la data actual.


Now (lpszBuf)

L'argument lpszBuf ha de ser l'adreça efectiva d'un buffer.

Exemple:

Now (lpszNow)

El buffer lpszNow s'omplirà amb una cadena de text ANSI que contindrà la data i hora actuals.


Time (lpszBuf)

L'argument lpszBuf ha de ser l'adreça efectiva d'un buffer.

Exemple:

Time (lpszTime)

El buffer lpszTime s'omplirà amb una cadena de text ANSI que contindrà l'hora actual.


Swap (dwValue1, dwValue2)

Els arguments dwValue1 i dwValue2 han de ser valors de 32 bits.

Exemple:

Swap (dwValue1, dwValue2)

Intercanvia els valors de les variables dwValue1 i dwValue2.


TextStrA ("quoted_text")

L'argument "quoted_text" pot ser qualsevol text entre cometes.

Exemple:

TextStrA("Test string")

Després d'executar-se aquesta sentència tindreu l'adreça efectiva d'una cadena de text ANSI acabada en zero. Recordeu que el valor tornat per TextStrA és l'adreça efectiva, per tant, NO heu d'utilitzar l'operador Addr.


TextStrW ("quoted_text")

L'argument "quoted_text" pot ser qualsevol text entre cometes.

Exemple:

TextStrW("Test string")

Després d'executar-se aquesta sentència tindreu l'adreça efectiva d'una cadena de text Unicode acabada en zero. Recordeu que el valor tornat per TextStrW és l'adreça efectiva, per tant, NO heu d'utilitzar l'operador Addr.


TextStr ("quoted_text")

L'argument "quoted_text" pot ser qualsevol text entre cometes.

Exemple:

TextStr("Test string")

Després d'executar-se aquesta sentència tindreu l'adreça efectiva d'una cadena de text acabada en zero, que estarà en format ANSI o Unicode depenent del mode en que estigui treballant l'aplicació. Si l'opció Utilitza cadenes de text Unicode de les Propietats del projecte està marcada, el text retornat serà Unicode. Altrament, serà ANSI.


TEXT
("cadena")

L'argument "cadena" ha de ser una cadena de text entre cometes. Torna l'adreça d'una cadena de text en format ANSI o Unicode.

Exemple:

Invoke lstrlen, TEXT("Hola")

Eax torna 4, la llargada de la cadena en caràcters. Per a la versió ANSI aquest valor es refereix a 4 bytes, mentre que per a la versió Unicode es refereix a 4 paraules (DW).

Recordeu que el valor tornat per TEXT és l'adreça efectiva de la cadena, per tant, NO heu d'utilitzar l'operador Addr. D'altra banda la cadena de text resultant serà ANSI o Unicode depenent de l'opció Utilitza cadenes de text Unicode de les Propietats del projecte.


AVÍS
: Es recomana l'ús de TextStr en lloc de TEXT per a la compatibilitat amb futures versions.

IMPORTANT: Si no heu de fer servir cap d'aquestes macros (incloses per defecte), o els seus noms crean algun conflicte amb alguna variable, procediment o macro del projecte, podeu treure-les desmarcant l'opció corresponenet a les Propietats del projecte.