Share via


_MemCmp( ) (Rutina de biblioteca API)

Compara dos áreas de memoria de length bytes.

int _MemCmp(void FAR *ptr1, void FAR *ptr2, unsigned int length)
void FAR *ptr1;            /* First point to start compare. */
void FAR *ptr2;            /* Second point to start compare. */
unsigned int length;         /* How much to compare in bytes. */

Observaciones

_MemCmp( ) compara cada byte de las dos áreas, a partir del byte situado más la izquierda en cada una de ellas, hasta que haya dos bytes que no coincidan. _MemCmp( ) devuelve 0 si coinciden todos los bytes de las áreas, un número positivo si el primer byte que no coincide de la primera área es mayor que el byte correspondiente de la segunda área o un número negativo si el primer byte que no coincide de la segunda área es mayor que el byte correspondiente de la primera área.

Para obtener más información acerca de cómo crear una biblioteca API e integrarla con Visual FoxPro, vea Acceso a la API de Visual FoxPro.

Ejemplo

El ejemplo siguiente utiliza _MemCmp( ) para comparar dos parámetros de caracteres hasta la longitud del primer byte que no coincida.

Código Visual FoxPro

SET LIBRARY TO MEMCMP  
? MEMCMP("Hello, world.", "Hello, world.")  && returns 0
? MEMCMP("Hello, world.", "Hello, wurld.")  && returns non-0

Código C

#include <pro_ext.h>

#define min(a, b) ((a) < (b) ? (a) : (b))

FAR Example(ParamBlk FAR *parm)
{
   int LenToCmp, RetValue;

   LenToCmp = min(parm->p[0].val.ev_length, parm->p[1].val.ev_length);

   _HLock(parm->p[0].val.ev_handle);
   _HLock(parm->p[1].val.ev_handle);

   RetValue = _MemCmp(_HandToPtr(parm->p[0].val.ev_handle),
      _HandToPtr(parm->p[1].val.ev_handle), LenToCmp);

   _RetInt(RetValue, 10); // does return control here

   _HUnLock(parm->p[0].val.ev_handle);
   _HUnLock(parm->p[1].val.ev_handle);
}

FoxInfo myFoxInfo[] = {
   {"MEMCMP", (FPFI) Example, 2, "C,C"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Vea también

_MemFill( ) (Rutina de biblioteca API) | _MemMove( ) (Rutina de biblioteca API) | Acceso a la API de Visual FoxPro