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

# CompareChar

compare 2 memory buffers character per character

## Declaration

Source position: systemh.inc line 794

`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

CompareByte |  | Compare 2 memory buffers byte per byte
CompareChar0 |  | Compare two buffers character by character till a null-character is reached.
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.

Documentation generated on: May 14 2021