Pascal. Типы PAnsiChar, PWideChar. Функции сравнения строк

Типы PAnsiChar, PWideChar. Функции сравнения строк


Содержание


Поиск на других ресурсах:

1. Функция StrComp. Сравнение двух строк

Функция StrComp реализует сравнение строк. Объявление функции для типов PAnsiChar и PWideChar следующее

function StrComp(const Str1, Str2: PAnsiChar): Integer;
function StrComp(const Str1, Str2: PWideChar): Integer;

здесь

  • Str1, Str2 – сравниваемые строки.

Функция возвращает целочисленное значение, которое интерпретируется следующим образом:

  • если Str1<Str2, то возвращается отрицательное число;
  • если Str1>Str2, то возвращается положительное число;
  • если Str1=Str2 (строки эквивалентны), то возвращается 0.

Пример.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  ps1 : PWideChar;
  ps2 : PWideChar;
  res : Integer;
  s : string;

begin
  // Функция StrComp

  // 1. Создать исходные строки
  ps1 := StrNew('1234567');
  ps2 := StrNew('12345678');

  // 2. Вывести строки
  Writeln('ps1 = ', StrPas(ps1));
  Writeln('ps2 = ', StrPas(ps2));

  // 3. Сравнить строки - вызвать StrComp
  res := StrComp(ps1, ps2);

  // 4. Обработать результат
  if res > 0 then
    Writeln('ps1 > ps2')
  else
  if res = 0 then
    Writeln('ps1 = ps2')
  else
    Writeln('ps1 < ps2');

  // 5. Освободить память, выделенную для строк ps1, ps2
  StrDispose(ps1);
  StrDispose(ps2);

  Readln;
end.

Результат

ps1 = 1234567
ps2 = 12345678
ps1 < ps2

 

2. Функция StrIComp. Сравнение строк без учета регистра символов

Функция StrIComp используется для сравнения двух строк без учета регистра символов. Функция работает так же, как и функция StrComp. Спецификация функции для типов PAnsiChar и PWideChar выглядит следующим образом

function StrIComp(const Str1, Str2: PAnsiChar): Integer;
function StrIComp(const Str1, Str2: PWideChar): Integer;

здесь

  • Str1, Str2 – сравниваемые строки.

Функция возвращает положительное значение, если Str1 > Str2. Если Str1 < Str2, то функция возвращает отрицательный результат. Если в лексикографическом порядке строки равны, функция возвращает 0.

Пример.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  ps1 : PWideChar;
  ps2 : PWideChar;
  res : Integer;

begin
  // Функция StrIComp - сравнение строк без учета регистра символов

  // 1. Заданы две строки
  ps1 := StrNew('ABCD');
  ps2 := StrNew('abcd');

  // 2. Вывести строки
  Writeln('ps1 = ', StrPas(ps1));
  Writeln('ps2 = ', StrPas(ps2));

  // 3. Сравнить строки, получить результат
  res := StrIComp(ps1, ps2);

  // 4. Вывести результат
  if res = 0 then Writeln('ps1 = ps2');
  if res > 0 then Writeln('ps1 > ps2');
  if res < 0 then Writeln('ps1 < ps2');

  // 5. Освободить память
  StrDispose(ps1);
  StrDispose(ps2);

  Readln;
end.

Результат

ps1 = ABCD
ps2 = abcd
ps1 = ps2

 

3. Функция StrLComp. Сравнение двух строк с заданной максимальной длиной

Функция StrLComp используется для сравнения строк. При этом сравнивается фиксированное количество символов, заданных параметром функции. Объявление функции для типов PAnsiChar и PWideChar выглядит следующим образом

function StrLComp(const Str1, Str2: PAnsiChar; MaxLen: Cardinal): Integer;
function StrLComp(const Str1, Str2: PWideChar; MaxLen: Cardinal): Integer;

здесь

  • Str1, Str2 – сравниваемые строки;
  • MaxLen – количество символов, которые принимаются во внимание при сравнении строк Str1 и Str2. Если длина строк больше, лишние символы не учитываются.

Пример.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  ps1 : PAnsiChar;
  ps2 : PAnsiChar;
  res : Integer;

begin

  // Функция StrLComp - сравнить две строки с заданной длиной

  // 1. Заданы две строки
  ps1 := 'ABCDEFGH';
  ps2 := 'ABCD';

  // 2. Сравнить первые 4 символа строк, получить результат
  res := StrLComp(ps1, ps2, 4);

  // 3. Обработать результат
  if res > 0 then
    Writeln('ps1 > ps2')
  else
  if res < 0 then
    Writeln('ps1 < ps2')
  else
    Writeln('ps1 = ps2');

  Readln;
end.

Результат

ps1 = ps2

 

4. Функция StrLIComp. Сравнение двух строк заданной длины без учета регистра символов

Функция StrLIComp реализует символическое сравнение строк с заданной максимальной длиной без учета регистра символов. Для типов PAnsiChar и PWideChar функция имеет следующие объявления

function StrLIComp(const Str1, Str2: PAnsiChar; MaxLen: Cardinal): Integer;
function StrLIComp(const Str1, Str2: PWideChar; MaxLen: Cardinal): Integer;

здесь

  • Str1, Str2 – сравниваемые строки;
  • MaxLen – максимально допустимое количество символов, которое сравнивается.

Функция возвращает значение больше 0, если строка в лексикографическом порядке Str1 > Str2. Если Str1 < Str2, функция возвращает отрицательное значение. Если первые MaxLen символов строк эквивалентны, то функция возвращает 0.

Пример.

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  ps1 : PWideChar;
  ps2 : PWideChar;
  res : Integer;

begin

  // Функция StrLIComp

  // 1. Сформировать строки ps1, ps2
  ps1 := StrNew('ABCDEFGH');
  ps2 := StrNew('abcdef');

  // 2. Сравнить строки - функция StrLIComp
  res := StrLIComp(ps1, ps2, 6); // Сравниваются первые 6 символов

  // 3. Обработать результат
  if res > 0 then Writeln('ABCDEFG > abcdef');
  if res < 0 then Writeln('ABCDEFG < abcdef');
  if res = 0 then Writeln('ABCDEFG = abcdef'); // +

  // 4. Освободить память, выделенную для строк ps1, ps2
  StrDispose(ps1);
  StrDispose(ps2);

  Readln;
end.

Результат

ABCDEFG = abcdef

 


Связанные темы