_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