|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.02.2014, 08:39 | #1 |
Регистрация: 31.05.2009
Сообщений: 6
|
Как преобразовать строку в название константу или её индификатор
Товарищи, подскажите как переданную 'строку' преобразовать в название константы или в её индификатор ?
Суть проблемы у меня в том что делаю серверное ПО для удаленного администрирования средством отправки консольных команд через ПО контроллер, разработано много различных команд , но вот загвоздка случилась в hooking реализации, то есть я передаю команду : $hook Form1|TListBox|lb_addstring|text и мне нужно чтобы lb_addstring определялась как имя константы либо как её индификатор $0180 . писать условия распознавания для каждой константы, вообще не вариант, потому как нихочу лишним кодом забивать серверное ПО, а как преобразовать string в const не знаю, инет весь перерыл, не нашёл ничего по этому поводу, хотя допускаю что возможно искал как то не верно. |
27.02.2014, 09:08 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я не спец в этой области, но думаю тебе нужно почитать про RTTI, и классы работы с ним.
I'm learning to live...
|
27.02.2014, 09:34 | #3 |
Регистрация: 31.05.2009
Сообщений: 6
|
Если отправлять строку сразу индификатором $0180
и на серверной стороне конвертить в integer то проблемы как бы нет. Но хотелось бы разобраться именно с возможностью передачи строк как имени констант, потому как эта тема мне много где ещё пригодилась бы, но инфы подходящей не нашёл. |
27.02.2014, 10:15 | #4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Копайте в сторону RTTI. Хотя не уерен, что константы к ним относятся.
|
27.02.2014, 12:53 | #5 |
Регистрация: 31.05.2009
Сообщений: 6
|
да натыкался я на RTTI когда гугл мучил, но не надыбал ничего подходящего )
с поиском компонентов по имени вообще проблем нет через findcomponent , а вот как с константами быть хз, если всё же через RTTI это как то можно сделать, то хотелось бы пример функции тогда ) Последний раз редактировалось androidz; 27.02.2014 в 12:58. |
27.02.2014, 12:54 | #6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
храните сами то что надо, через TStringList например. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
27.02.2014, 12:57 | #7 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Код:
программа — запись алгоритма на языке понятном транслятору
|
27.02.2014, 13:54 | #8 | |
Регистрация: 31.05.2009
Сообщений: 6
|
evg_m, ну почти, единственное но, команды набиваются как string , как преобразовать string в constName ? в этом же вся загвоздка выходит
единственный выход какой я пока придумал это который я выше описывал: Цитата:
единственное писать условия, либо влить все константы в бд и запросами, но это лишний гемор выходит. и если условиями то это вообще хрень потому как там 8 страниц констант)) Последний раз редактировалось androidz; 27.02.2014 в 14:02. |
|
27.02.2014, 14:42 | #9 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
зайдем с другой стороны.
Цитата:
Цитата:
теперь при наборе он должен ПРАВИЛЬНО набрать эти самые константы. а если ошибется? кто и главное когда ему это скажет? т.е. мы не хотим гемора себе как программисту (один раз написать и "забыть") и перекладываем его пользователю(постоянно: помни читай проверяй) (опять же себе надеюсь). Цитата:
усовершенствованная БД ресурсы программы и как уже упоминали TStringList для чтения из ресурсов и поиска. (была тема с моими ответами как использовать связку ресурсы + TstringList).
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 27.02.2014 в 14:46. |
|||
27.02.2014, 16:38 | #10 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Лично для простого способа такой функциональности использую Enumerated types
которые являются именованными числовыми константами со специфической семантикой в языке и GetEnumValue для преобразования строки в константу (наоборот - GetEnumName на этой же странице). Способ работает в дельфи с 7 версии (более ранние не проверял). Правда есть заморочка - с "нумерованными" версиями enumerated types такое не работает (не поддерживает RTTI), поэтому только енумы с индексацией от 0 и без промежутков. Для сложных случаев - TStringList и THashedStringList в качестве реализации ассоциативного массива, с методами поиска Find и IndexOf Последний раз редактировалось phomm; 27.02.2014 в 16:42. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как преобразовать строку | DimychX | Работа с сетью в Delphi | 10 | 23.02.2014 22:49 |
как преобразовать строку в вещественные числа | Gennadiusisus | Общие вопросы C/C++ | 1 | 29.01.2014 20:48 |
Как преобразовать строку в имя компонента? | IceExecutioner | Компоненты Delphi | 4 | 14.09.2011 07:32 |
Как переменную преобразовать в строку? | clever77 | Microsoft Office Excel | 10 | 16.05.2011 10:23 |
Как преобразовать UINT в строку? | Сильванович Михаил | Общие вопросы C/C++ | 2 | 12.07.2007 09:58 |