![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 12.08.2013
Сообщений: 99
|
![]()
Есть ли в Delphi 7 Аналог Case для строк или какойнибудь отдельный модуль чтобы можно было работатьс case также как в VB Net
Хотел было написать код через Case используя не числовую а строковую переменную но не тут то было После написания кода в 200 строк он мне выдал ошибку говорящию что case не работает со строками. можно использовать иф но код будет раз в 10 тогда больше чем это сделать через Case Скажите самый эфективный способ сделать многомерное сравнение без иф аналогом case если он есть. |
![]() |
![]() |
![]() |
#2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Нет такого способа. Дельфи строки нельзя проверить по сейсу. Существует дельфи фор дотнет где это можно (емнип), но это будет тот же дотнет.
Я скажу так, если у Вас код на 200 строк с кейсом по строкам - у Вас плохо запроектировано. Такие задачи могут быть в основном в анализаторах, и решаются они на совершенно ином уровне нежели кейс по строкам. Если у Вас строго известен набор возможных вариантов, то можно использовать енумы - специальный тип с именованными значениями, например: Код:
Есть и специальное средство GetEnumName + GetEnumValue + TypeInfo (модуль TypInfo), которое позволяет конвертировать енум в строку и обратно, им можно реализовать Вашу задачу. Однако, если же строка произвольная (что, конечно, малореально, если Вы таким образом поставили вопрос) - то точно ничего не поможет, кроме пачки иф. |
![]() |
![]() |
![]() |
#3 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#4 | |
Участник клуба
Регистрация: 24.07.2009
Сообщений: 638
|
![]() Цитата:
Но тут два момента: - Case требует константы в перечислении. Поэтому придется писать значения хеш функции. - Хеши строк теоретически могут совпадать, но практически не встречалось. Да, и еще вариант - индексировать строки: Код:
** Удача терпелива. **
Vad3333@inbox.ru Последний раз редактировалось Stilet; 01.09.2013 в 14:29. |
|
![]() |
![]() |
![]() |
#5 | |
Участник клуба
Регистрация: 11.08.2012
Сообщений: 1,226
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Код:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
3 задания на Delphi, срок -вечер 1 июня (до 22 по Москве) | Dimitrius_92 | Фриланс | 11 | 31.05.2010 20:48 |
аналог функции case | redfield | Microsoft Office Excel | 3 | 05.05.2010 12:25 |
Не могу сделать на Delphi аналог phpMyAdmin для MySQL 4 | Daniel_90 | БД в Delphi | 3 | 05.03.2009 09:57 |
Контрольная по Delphi. Срок 18 часов, оплата WM. | PUH | Фриланс | 2 | 08.12.2008 17:46 |
Аналог паскалевского case | MusicMan | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 21.04.2008 22:10 |