Типы PAnsiChar, PWideChar. Функции сравнения строк
Содержание
- 1. Функция StrComp. Сравнение двух строк
- 2. Функция StrIComp. Сравнение строк без учета регистра символов
- 3. Функция StrLComp. Сравнение двух строк с заданной максимальной длиной
- 4. Функция StrLIComp. Сравнение двух строк заданной длины без учета регистра символов
- Связанные темы
Поиск на других ресурсах:
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
⇑
Связанные темы
- Реализация строк типа PChar в памяти компьютера. Типы PAnsiChar, PWideChar. Выделение памяти для строк. Доступ по индексу
- Функции, которые изменяют содержимое строки. Функции StrCat, StrLCat, StrLower, StrUpper, StrCopy, StrECopy, StrLCopy, StrMove
- Функции поиска и получения информации о строках. Функции StrEnd, StrLen, StrPos, StrScan, StrRScan
- Тип String. Операции над строками символов
⇑