Freigeben über


_MemCmp( ), API-Bibliotheksroutine

Vergleicht zwei Speicherbereiche von length Byte.

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. */

Hinweise

_MemCmp( ) vergleicht jedes Byte in zwei Bereichen, beginnend mit dem jeweils ganz linken, bis zwei Bytes nicht übereinstimmen. _MemCmp( ) gibt 0 zurück, wenn alle Bytes in den Bereichen übereinstimmen. Wenn das erste nicht übereinstimmende Byte im ersten Bereich größer als das entsprechende Byte im zweiten Bereich ist, wird eine positive Zahl zurückgegeben. Eine negative Zahl wird zurückgegeben, wenn das erste nicht übereinstimmende Byte im zweiten Bereich größer als das entsprechende Byte im ersten Bereich ist.

Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.

Beispiel

Im folgenden Beispiel wird _MemCmp( ) verwendet, um zwei Zeichenparameter bis zum Auftreten des ersten nicht übereinstimmenden Bytes zu vergleichen.

Visual FoxPro-Code

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

C-Code

#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
};

Siehe auch

_MemFill( ), API-Bibliotheksroutine | _MemMove( ), API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API