Типи 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. Операції над рядками символів
- Тип String. Функції роботи з рядками символів. Функції Concat, Copy, Delete, Insert, Length, Pos, Val, Str
⇑