CompareChar
compare 2 memory buffers character per character
Declaration
Source position: systemh.inc line 880
function CompareChar(const buf1; const buf2; len: SizeInt) : SizeInt;
Description
CompareChar compares two memory regions buf1,buf2 on a character-per-character basis for a total of len characters.
The CompareChar0 variant compares len bytes, or until a zero character is found.
The function returns one of the following values:
- -1
- if buf1 and buf2 contain different characters in the first len positions, and the first such character is smaller in buf1 than the character at the same position in buf2.
- 0
- if the first len characters in buf1 and buf2 are equal.
- 1
- if buf1 and buf2 contain different characters in the first len positions, and the first such character is larger in buf1 than the character at the same position in buf2.
Errors
None.
See also
Name | Description |
---|---|
CompareByte | Compare 2 memory buffers byte per byte |
CompareChar0 | Compare two buffers character by character till a null-character is reached. |
CompareDWord | Compare 2 memory buffers DWord per DWord |
CompareWord | Compare 2 memory buffers word per word |
Example
Program Example100;
{ Program to demonstrate the CompareChar function. }
Const
ArraySize = 100;
HalfArraySize = ArraySize Div 2;
Var
Buf1,Buf2 : Array[1..ArraySize] of char;
I : longint;
Procedure CheckPos(Len : Longint);
Begin
Write('First ',Len,' characters are ');
if CompareChar(Buf1,Buf2,Len)<>0 then
Write('NOT ');
Writeln('equal');
end;
Procedure CheckNullPos(Len : Longint);
Begin
Write('First ',Len,' non-null characters are ');
if CompareChar0(Buf1,Buf2,Len)<>0 then
Write('NOT ');
Writeln('equal');
end;
begin
For I:=1 to ArraySize do
begin
Buf1[i]:=chr(I);
If I<=HalfArraySize Then
Buf2[I]:=chr(I)
else
Buf2[i]:=chr(HalfArraySize-I);
end;
CheckPos(HalfArraySize div 2);
CheckPos(HalfArraySize);
CheckPos(HalfArraySize+1);
CheckPos(HalfArraySize + HalfArraySize Div 2);
For I:=1 to 4 do
begin
buf1[Random(ArraySize)+1]:=Chr(0);
buf2[Random(ArraySize)+1]:=Chr(0);
end;
Randomize;
CheckNullPos(HalfArraySize div 2);
CheckNullPos(HalfArraySize);
CheckNullPos(HalfArraySize+1);
CheckNullPos(HalfArraySize + HalfArraySize Div 2);
end.