Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Case для строковых значений без учета регистра

Delphi , Синтаксис , Текст и Строки

Case для строковых значений без учета регистра

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Funktioniert unabhangig von der Klein-/Gro?scheibung in dem Input-String: 
  Versuchen Sie es z.B. mit "Mother" oder "mOTHER"... 

  Damit kann man seine eigene Makrosprache entwickeln oder bestimmte 
  Teile eines Strings aus einem SQL statement, aus einer wohlgeformten Datei 
  wie im XML-Format...interpretieren. 
}

 { 
  It works fine and it's not case sensitive: 
  Try to give "Mother" or "mOTHER" in the Input-String... 

  For exemple, you may use this to programm your own macro command system. 
  You can also parse a well formed text file (XML...) 
  Or to interpret a Database Field name as a selector, or whatelse you want. 
}


 uses
   TypInfo;

 type
   TNumericChoiceParent = (ncp_Mother, ncp_Father, ncp_Child);

 procedure TForm1.btChooseClick(Sender: TObject);
 var
   S: string;
 begin
   S := InputEdit.Text;
   case TNumericChoiceParent(GetEnumValue(TypeInfo(TNumericChoiceParent), 'ncp_' + S)) of
     ncp_Mother: ShowMessage('Hello Mom :o)');
     ncp_Father: ShowMessage('Hi, Dad -]');
     ncp_Child: ShowMessage('Shut up and eat your soup !-(');
   else
     ShowMessage('Who do you think that you are?');
   end;
 end;

Пример программирования на Delphi, демонстрирующий создание сравнения строк с игнорированием регистра с помощью функции GetEnumValue из единицы TypInfo.

Вот подробное описание того, что код делает:

  1. Тип TNumericChoiceParent определяет перечисление с тремя значениями: ncp_Mother, ncp_Father и ncp_Child.
  2. В процедуре btChooseClick пользовательский ввод из контрола InputEdit получается и хранится в переменной S.
  3. Код использует функцию GetEnumValue для получения значения константы перечисления, которое соответствует пользовательскому вводу (с игнорированием регистра). Это делается путем конкатенации префикса 'ncp_' с строкой пользователя S.
  4. Результат функции GetEnumValue кастится в тип TNumericChoiceParent и используется в конструкции case.
  5. В зависимости от значения, возвращенного функцией GetEnumValue, код выводит соответствующее сообщение с помощью процедуры ShowMessage.

Преимущества этого подхода:

  • Сравнение строк с игнорированием регистра: Код игнорирует регистр ввода строки при сравнении ее с константами перечисления.
  • Flexibility: Пользователь может ввести строки в различных регистрах (например, "Mother", "mOTHER" и т.д.), и код все равно будет их правильно совмещать.

Однако есть некоторые потенциальные недостатки:

  • Ограничение гибкости: Этот подход работает только для фиксированного набора констант перечисления. Если вам нужно обрабатывать более динамические или сложные строки, вы может хотеть рассмотреть использование регулярных выражений или других техник обработки строк.
  • Производительность: Функция GetEnumValue может быть медленнее, чем другие методы сравнения строк, особенно для больших наборов данных.

В целом, этот код демонстрирует креативный способ достижения сравнения строк с игнорированием регистра в Delphi, но важно взвесить преимущества против потенциальных недостатков и рассмотреть альтернативные подходы в зависимости от вашего конкретного случая использования.

В статье описывается использование оператора Case для строковых значений без учета регистра в Delphi, что позволяет создавать свою макросную систему или интерпретировать текстовые файлы и поля базы данных.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Текст и Строки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-04 05:56:45/0.0057010650634766/0