[Overview][Constants][Types][Classes][Procedures and functions][Variables] Reference for unit 'System' (#rtl)

CompareChar

ompare 2 memory buffers character per character

Declaration

Source position: systemh.inc line 381

function CompareChar(

  const buf1;

  const buf2;

  len: SizeInt

):SizeInt;

Description

CompareCharcompares two memory regions buf1,buf2on a character-per-character basis for a total of lencharacters.

The CompareChar0variant compares lenbytes, or until a zero character is found.

The function returns one of the following values:

-1
if buf1and buf2contain different characters in the first lenpositions, and the first such character is smaller in buf1than the character at the same position in buf2.
0
if the first lencharacters in buf1and buf2are equal.
1
if buf1and buf2contain different characters in the first lenpositions, and the first such character is larger in buf1than the character at the same position in buf2.

Errors

None.

See also

CompareByte

  

Compare 2 memory buffers byte per byte

CompareWord

  

Compare 2 memory buffers word per word

CompareDWord

  

Compare 2 memory buffers DWord per DWord

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.