|
|
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Доброй вечер! Мой вопрос касается модуля TypInfo.pas из Delphi 7. У меня имеется список ListBox, в котором находятся имена типов методов (событий) в виде обычных строк: TNotifyEvent, TMouseEvent, TDrawItemEvent и так далее. При выборе пункта в списке, этот тип должен передаваться в качестве параметра PTypeInfo в другую процедуру, но он имеет тип string. Как это преобразовать? Пробовал так: Var P: PTypeInfo; begin P:= ListBox4.Items[ListBox4.ItemIndex]; - // не работает или P:= ListBox4.Items.Objects[ListBox4.ItemIndex]; - // не работает Но если указать тип напрямую - P:= PTypeInfo(TypeInfo(TKeyEvent)); - // работает Возможно следует в список строк добавлять не просто строки, а объекты, типа AddObject ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 22:37 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64, зачем тебе типы методов? Это ведь лишь сигнатуры. Код: pascal 1. Может, тебе именно сами методы нужны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 22:46 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Типы методов я и так получаю, но в виде строки. А мне нужно передать этот параметр дальше Например: GetMethodRTTI(P: PTypeInfo, TS: TStrings); И как быть с первым параметром? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 22:52 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64P:= ListBox4.Items[ListBox4.ItemIndex]; - // не работает Не удивительно. Судя по этой строчке, Вы пытаетесь написать "Мастера и Маргариту" прежде чем одолели букварь. Linux_64Возможно следует в список строк добавлять не просто строки, а объекты, типа AddObject ? Вы пытаетесь сделать самую страшную вещь, которую можно делать в такой ситуации: Вы гадаете. Шаманите. Бросьте эту привычку раз и навсегда, иначе программиста из Вас никогда не получится. Программист должен разбираться. Понимать, что он делает и для чего. Какой результат он получит от своих действий, а если не получил его - в чём ошибся, почему результат именно таков, какой есть. Вам следует взять хорошую книгу по программированию на Delphi и внимательно изучить её, начиная с более простых примеров. Та тема, непонимание которой Вы сейчас демонстрируете - типы данных и работа с ними. Цель присваивания - переменная P - имеет тип PTypeInfo. То есть "указатель на TTypeInfo". Поэтому справа должно стоять либо выражение типа PTypeInfo, либо выражение, автоматически к нему приводимое. Что у Вас стоит справа? Строка? Так чего же Вы ждёте? Берите книгу и читайте с начала и до тех пор, пока не сможете сформулировать правильный для этой ситуации вопрос. И ещё один добрый совет. Если то, что Вы пишете, предназначено в реальную работу - честно скажите заказчику, что Вы не готовы и проектировать это решение должен более опытный программист. Потому что с вероятностью 95% окажется, что никакого TNotifyEvent там вообще и не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2019, 23:17 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64У меня имеется список ListBox, в котором находятся имена типов методов (событий) в виде обычных строк: TNotifyEvent, TMouseEvent, TDrawItemEvent и так далее. Как они попадают в этот список ? Опишите задачу целиком, а не а не тупик в середине, с которого выхода нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2019, 00:55 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Вазможно это вам поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2019, 00:59 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
softwarer, зачем умничаешь, код давай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2019, 16:09 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Что, значит бросьте эту привычку? Я спросил у вас совета, но вы начинаете умничать, хорошо, допустим у вас мозгов больше чем у меня, но неужели вам, мозговитым чувакам, так сложно мне подсказать решение? Очень скоро, я , - тупой дурак, предоставлю вам свою разработку, которую создавал более года, я приоткрою шторы: это персональная среда разработки, основана на Delphi 7 , и вот когда она выйдет, а она уже готова на а 80%, вот тогда я над тобой посмеюсь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2019, 23:33 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64, эта персональная среда будет в Linux 64-битном работать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2019, 23:48 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64Что, значит бросьте эту привычку? То и значит. Если хотите когда-нибудь стать программистом, а не амбициозным нулём-энтузиастом - переставайте шаманить и начинайте копать, изучать и разбираться. Linux_64Я спросил у вас совета, И я дал Вам совет. Ровно такой же, какой дал бы, например, своему сыну, если бы он пришёл с тем же вопросом. Linux_64хорошо, допустим у вас мозгов больше чем у меня, но неужели вам, мозговитым чувакам, так сложно мне подсказать решение? Представь себе, что ты пришёл на прыгодром и говоришь: чуваки, я сшил парашют, только он у меня не раскрывается, помогите. Тебе отвечают: дурилка, проектировать парашюты нужно уметь, шить тем более, убьёшься же нахрен. И тут ты обижаешься: сложно, что ли, подсказать решение? Linux_64Очень скоро, я , - тупой дурак, предоставлю вам свою разработку, которую создавал более года, я приоткрою шторы: это персональная среда разработки, основана на Delphi 7 , и вот когда она выйдет, а она уже готова на а 80%, вот тогда я над тобой посмеюсь... Ох, что-то вас в этом году густо повалило... . Представляй, представляй. А лучше посмотри форум - такие каждый год приходят, весной и осенью. И до сих пор ещё ни один не вернулся с готовым решением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 00:10 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64персональная среда разработки, основана на Delphi 7 Утираю слезы умиления! Нас ждет разбработки на базе основы 17-летней давности! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 00:34 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64это персональная среда разработки, основана на Delphi 7 , и вот когда она выйдет, а она уже готова на а 80%, вот тогда я над тобой посмеюсь...Слабак. Если б хотя бы на Delphi 3, а желательно - и ниже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 03:38 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
rgreatУтираю слезы умиления! слава попова и бабушкина не дает автору покая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 06:30 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Что в ДНР больше заняться нечем, чем критиковать? На тройке?, это ещё на чем?, на единичке? Или может в обычном блокноте? Вопрос решен. Тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 07:32 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Лишний раз себе доказываю, что если не пить пиво и не гулять по девочкам, то мозг начинает работать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 08:00 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64, Может быть, может быть. Но разве это жизнь?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 08:29 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
>Linux_64 А ваша "среда" поддерживает сторонние компоненты и их редакторы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 09:33 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Нет. Только стандартные редакторы свойств: Редактор строк (TStrings), редактор иконок и изображений (TPicture, TBitmap, TIcon), редактор панелей для StatusBar. Установка сторонних компонентов предусмотрена, но если у него есть спец-свойство, невозможно написать редактор свойств для данного типа, хотя сам редактор может поставляться вместе с компонентом. Мне пока не до сторонних компонентов, это в будущем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 10:26 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64 Установка сторонних компонентов предусмотрена, но если у него есть спец-свойство Делать какое то спец-свойство для вашего ПО никто не будет. А с помощью компонентов с трёх вкладок много не напишешь. Как происходить формирование конечного EXE файла ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 10:41 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Компоненты в будущем я добавлю, это не проблема, так же как и количество вкладок в палитре. В среде используется «родной» компилятор из седьмой версии. Но это уже другая тема. Ещё месяца три-четыре и я закончу проект v. 1.0 полностью. Мой вопрос решён. Тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 10:51 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Не совсем понятно. Если программа делает малую часть того что делает Delphi, используя компилятор Delphi. То зачем она нужна ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 10:54 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
DimaBrНе совсем понятно. Если программа делает малую часть того что делает Delphi, используя компилятор Delphi. То зачем она нужна ? О, это такое специфическое развлечение. Нужно исключительно для самоутверждения. В том топике, на который я давал ссылку, я как раз писал о тех людях, которые пишут слабое подобие Delphi на Delphi. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 11:17 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Никак не угомонятся..:)) А кто вам сказал, что меня устраивает родная среда?, а эту я делаю исключительно для себя, безо всяких там записей в системный реестр, размером дистрибьютива в гигабайт и прочей дублирующей и бестолковой бурды. В дальнейшем я полностью откажусь от родной среды и буду пользоваться своей и программы будут не многим хуже, чем у оригинала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 11:33 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64, рекомендую посмотреть между делом на эти проекты: https://www.lazarus-ide.org/ https://plugins.jetbrains.com/plugin/7340-i-pascal ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 11:40 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
YuRockLinux_64это персональная среда разработки, основана на Delphi 7 , и вот когда она выйдет, а она уже готова на а 80%, вот тогда я над тобой посмеюсь...Слабак. Если б хотя бы на Delphi 3, а желательно - и ниже... Какие Дельфи 7 или 3? Судя по нику у него х64 линух. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 15:16 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64В дальнейшем я полностью откажусь от родной среды и буду пользоваться своей и программы будут не многим хуже, чем у оригинала. времени не жалко? "Эту б энергию да мирное русло" © GatorСудя по нику у него х64 линух. видя скрин с рабочим столом выше, вериться с трудом. Хрестоматийный пример велосипедописателя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2019, 16:21 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
и как такое преобразовать? Код: sql 1. "Продажа" превращается в кракозябры ал-ля Код: sql 1. здесь уже наоборот надо делать - TIdURI.URLEncode() неужели нет какой-то "серебряной пули"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2019, 15:03 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Вернёмся к нашим баранам... Я нашёл способ как парсить DFM файл и добавить в него ссылку на метод. Все работает. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 13:28 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64Вернёмся к нашим баранам... Я нашёл способ как парсить DFM файл и добавить в него ссылку на метод. Все работает. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. И что же ты хочешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 13:39 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Linux_64Я нашёл способ как парсить DFM файл и добавить в него ссылку на метод. Вспомнилось: "Крупный учёный - это тот, кто успешно решает мелкие проблемы, стоящие на пути к глобальному заблуждению". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 13:59 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Вас не удивляет, что никто не одобряет вашу затею ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 18:32 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
DimaBrВас не удивляет, что никто не одобряет вашу затею ? Гениев никогда не понимают. Им завидуют, забрасывают грязью и ставят палки в колёса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 18:35 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
DimaBr, Дима, я сделал! Все работает! А на чужое мнение мне плевать. Спасибо за помощь. Тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 19:28 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
авторЯ нашёл способ как парсить DFM файл и добавить в него ссылку на метод. Все работает. А в элемент коллекции тоже работает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2019, 19:52 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
makhaonLinux_64, рекомендую посмотреть между делом на эти проекты: https://www.lazarus-ide.org/ https://plugins.jetbrains.com/plugin/7340-i-pascal Это было жестоко... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2019, 15:39 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
DimaBr, да в ильмените коллекции тоже! И в MenuItem и в TreeView, все работает. Вычисляем нужную строку с объектом и вставляем либо удаляем ее из dfm-файла. Признаюсь, немного пришлось доработать напильником и обратите внимание!, не важно где именно будет дописана нужная строка с указателем на метод, в начале или в конце. Как знать, как именно разработчики Borland решили эту проблему. Возможно именно этим путём. Но как бы там ни было. Это работает. Практически полноценная, автономная среда, общим размером 9 МБт. Возникли некоторые проблемы с деревом объектов, но за два дня я это решил. Осталось немного разукрасить среду, убрать лишние переменные , комментарии и версия 1.0 готова! Сейчас тестирую на разных компонентах. Есть малые баги , но в целом на работу самой среды они не влияют. В версии 2.0 планирую добавить в проект библиотеку KOL, это позволит уменьшить размер исполняемого файла приблизительно в 10 раз. Но это произойдёт месяца через три. Факт: можно пользоваться средой прямо с флешки в интернет-клубе и написать простенькую прогу и тут же скомпилировать ее. Для меня самое оно. Продолжение следует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2019, 20:40 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
DimaBr, да в ильмените коллекции тоже! И в MenuItem и в TreeView, все работает. Вычисляем нужную строку с объектом и вставляем либо удаляем ее из dfm-файла. Признаюсь, немного пришлось доработать напильником и обратите внимание!, не важно где именно будет дописана нужная строка с указателем на метод, в начале или в конце. Как знать, как именно разработчики Borland решили эту проблему. Возможно именно этим путём. Но как бы там ни было. Это работает. Практически полноценная, автономная среда, общим размером 9 МБт. Возникли некоторые проблемы с деревом объектов, но за два дня я это решил. Осталось немного разукрасить среду, убрать лишние переменные , комментарии и версия 1.0 готова! Сейчас тестирую на разных компонентах. Есть малые баги , но в целом на работу самой среды они не влияют. В версии 2.0 планирую добавить в проект библиотеку KOL, это позволит уменьшить размер исполняемого файла приблизительно в 10 раз. Но это произойдёт месяца через три. Факт: можно пользоваться средой прямо с флешки в интернет-клубе и написать простенькую прогу и тут же скомпилировать ее. Для меня самое оно. Продолжение следует... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2019, 20:42 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
Элемент коллекции, это не начало компонента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2019, 21:53 |
|
||
|
Как преобразовать строку с именем класса в тип этого класса?
|
|||
|---|---|---|---|
|
#18+
DimaBrЭлемент коллекции, это не начало компонентаВот в башке свербит: При желании можно сделать, но что он сделает с чужими компонентами, интерфейсами... А "Элементом коллекции" может быть что угодно. От Коллекционера зависит, чего он коллекционирует. Например, всё, что имеет IUnknown :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2019, 23:38 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2038985]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
94ms |
get tp. blocked users: |
2ms |
| others: | 206ms |
| total: | 500ms |

| 0 / 0 |
