Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 9
Доброй вечер! Мой вопрос касается модуля 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 сен 19, 22:37    [21968971]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
ёёёёё
Member

Откуда:
Сообщений: 701
Linux_64,

зачем тебе типы методов? Это ведь лишь сигнатуры.
  TNotifyEvent = procedure(Sender: TObject) of object;


Может, тебе именно сами методы нужны?
11 сен 19, 22:46    [21968977]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 9
Типы методов я и так получаю, но в виде строки. А мне нужно передать этот параметр дальше
Например:
GetMethodRTTI(P: PTypeInfo, TS: TStrings);
И как быть с первым параметром?
11 сен 19, 22:52    [21968981]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58454
Блог
Linux_64
P:= ListBox4.Items[ListBox4.ItemIndex]; - // не работает

Не удивительно. Судя по этой строчке, Вы пытаетесь написать "Мастера и Маргариту" прежде чем одолели букварь.

Linux_64
Возможно следует в список строк добавлять не просто строки, а объекты, типа AddObject ?

Вы пытаетесь сделать самую страшную вещь, которую можно делать в такой ситуации: Вы гадаете. Шаманите. Бросьте эту привычку раз и навсегда, иначе программиста из Вас никогда не получится. Программист должен разбираться. Понимать, что он делает и для чего. Какой результат он получит от своих действий, а если не получил его - в чём ошибся, почему результат именно таков, какой есть.

Вам следует взять хорошую книгу по программированию на Delphi и внимательно изучить её, начиная с более простых примеров. Та тема, непонимание которой Вы сейчас демонстрируете - типы данных и работа с ними. Цель присваивания - переменная P - имеет тип PTypeInfo. То есть "указатель на TTypeInfo". Поэтому справа должно стоять либо выражение типа PTypeInfo, либо выражение, автоматически к нему приводимое. Что у Вас стоит справа? Строка? Так чего же Вы ждёте? Берите книгу и читайте с начала и до тех пор, пока не сможете сформулировать правильный для этой ситуации вопрос.

И ещё один добрый совет. Если то, что Вы пишете, предназначено в реальную работу - честно скажите заказчику, что Вы не готовы и проектировать это решение должен более опытный программист. Потому что с вероятностью 95% окажется, что никакого TNotifyEvent там вообще и не нужно.
11 сен 19, 23:17    [21968999]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11229
Linux_64
У меня имеется список ListBox, в котором находятся имена типов методов (событий) в виде обычных строк: TNotifyEvent, TMouseEvent, TDrawItemEvent и так далее.

Как они попадают в этот список ?
Опишите задачу целиком, а не а не тупик в середине, с которого выхода нет.
12 сен 19, 00:55    [21969030]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11229
Вазможно это вам поможет
12 сен 19, 00:59    [21969031]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3326
softwarer,

зачем умничаешь, код давай
12 сен 19, 16:09    [21969624]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 9
Что, значит бросьте эту привычку?
Я спросил у вас совета, но вы начинаете умничать, хорошо, допустим у вас мозгов больше чем у меня, но неужели вам, мозговитым чувакам, так сложно мне подсказать решение?
Очень скоро, я , - тупой дурак, предоставлю вам свою разработку, которую создавал более года, я приоткрою шторы: это персональная среда разработки, основана на Delphi 7 , и вот когда она выйдет, а она уже готова на а 80%, вот тогда я над тобой посмеюсь...
12 сен 19, 23:33    [21969948]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
ёёёёё
Member

Откуда:
Сообщений: 701
Linux_64,

эта персональная среда будет в Linux 64-битном работать?
12 сен 19, 23:48    [21969954]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58454
Блог
Linux_64
Что, значит бросьте эту привычку?

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

Linux_64
Я спросил у вас совета,

И я дал Вам совет. Ровно такой же, какой дал бы, например, своему сыну, если бы он пришёл с тем же вопросом.

Linux_64
хорошо, допустим у вас мозгов больше чем у меня, но неужели вам, мозговитым чувакам, так сложно мне подсказать решение?

Представь себе, что ты пришёл на прыгодром и говоришь: чуваки, я сшил парашют, только он у меня не раскрывается, помогите. Тебе отвечают: дурилка, проектировать парашюты нужно уметь, шить тем более, убьёшься же нахрен. И тут ты обижаешься: сложно, что ли, подсказать решение?

Linux_64
Очень скоро, я , - тупой дурак, предоставлю вам свою разработку, которую создавал более года, я приоткрою шторы: это персональная среда разработки, основана на Delphi 7 , и вот когда она выйдет, а она уже готова на а 80%, вот тогда я над тобой посмеюсь...

Ох, что-то вас в этом году густо повалило.... Представляй, представляй. А лучше посмотри форум - такие каждый год приходят, весной и осенью. И до сих пор ещё ни один не вернулся с готовым решением.
13 сен 19, 00:10    [21969960]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
rgreat
Member

Откуда:
Сообщений: 5211
Linux_64
персональная среда разработки, основана на Delphi 7

Утираю слезы умиления!

Нас ждет разбработки на базе основы 17-летней давности!
13 сен 19, 00:34    [21969963]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 3967
Linux_64
это персональная среда разработки, основана на Delphi 7 , и вот когда она выйдет, а она уже готова на а 80%, вот тогда я над тобой посмеюсь...
Слабак.
Если б хотя бы на Delphi 3, а желательно - и ниже...
13 сен 19, 03:38    [21969973]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 1641
rgreat
Утираю слезы умиления!

слава попова и бабушкина не дает автору покая
13 сен 19, 06:30    [21969980]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 9
Что в ДНР больше заняться нечем, чем критиковать?
На тройке?, это ещё на чем?, на единичке? Или может в обычном блокноте?
Вопрос решен. Тема закрыта.

К сообщению приложен файл. Размер - 120Kb
13 сен 19, 07:32    [21969994]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 9
Лишний раз себе доказываю, что если не пить пиво и не гулять по девочкам, то мозг начинает работать...
13 сен 19, 08:00    [21970008]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Vlad F
Member

Откуда:
Сообщений: 871
Linux_64,

Может быть, может быть. Но разве это жизнь?))
13 сен 19, 08:29    [21970024]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11229
>Linux_64
А ваша "среда" поддерживает сторонние компоненты и их редакторы ?
13 сен 19, 09:33    [21970080]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 9
Нет. Только стандартные редакторы свойств:
Редактор строк (TStrings), редактор иконок и изображений (TPicture, TBitmap, TIcon), редактор панелей для StatusBar. Установка сторонних компонентов предусмотрена, но если у него есть спец-свойство, невозможно написать редактор свойств для данного типа, хотя сам редактор может поставляться вместе с компонентом. Мне пока не до сторонних компонентов, это в будущем.

К сообщению приложен файл. Размер - 128Kb
13 сен 19, 10:26    [21970139]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11229
Linux_64
Установка сторонних компонентов предусмотрена, но если у него есть спец-свойство

Делать какое то спец-свойство для вашего ПО никто не будет. А с помощью компонентов с трёх вкладок много не напишешь.
Как происходить формирование конечного EXE файла ?
13 сен 19, 10:41    [21970154]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 9
Компоненты в будущем я добавлю, это не проблема, так же как и количество вкладок в палитре. В среде используется «родной» компилятор из седьмой версии. Но это уже другая тема. Ещё месяца три-четыре и я закончу проект v. 1.0 полностью.
Мой вопрос решён. Тема закрыта.
13 сен 19, 10:51    [21970164]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11229
Не совсем понятно. Если программа делает малую часть того что делает Delphi, используя компилятор Delphi. То зачем она нужна ?
13 сен 19, 10:54    [21970168]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58454
Блог
DimaBr
Не совсем понятно. Если программа делает малую часть того что делает Delphi, используя компилятор Delphi. То зачем она нужна ?

О, это такое специфическое развлечение. Нужно исключительно для самоутверждения. В том топике, на который я давал ссылку, я как раз писал о тех людях, которые пишут слабое подобие Delphi на Delphi.
13 сен 19, 11:17    [21970185]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 9
Никак не угомонятся..:))
А кто вам сказал, что меня устраивает родная среда?, а эту я делаю исключительно для себя, безо всяких там записей в системный реестр, размером дистрибьютива в гигабайт и прочей дублирующей и бестолковой бурды. В дальнейшем я полностью откажусь от родной среды и буду пользоваться своей и программы будут не многим хуже, чем у оригинала.
13 сен 19, 11:33    [21970199]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3326
Linux_64,

рекомендую посмотреть между делом на эти проекты:

https://www.lazarus-ide.org/
https://plugins.jetbrains.com/plugin/7340-i-pascal
13 сен 19, 11:40    [21970204]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Gator
Member

Откуда: Москва
Сообщений: 14910
YuRock
Linux_64
это персональная среда разработки, основана на Delphi 7 , и вот когда она выйдет, а она уже готова на а 80%, вот тогда я над тобой посмеюсь...
Слабак.
Если б хотя бы на Delphi 3, а желательно - и ниже...

Какие Дельфи 7 или 3? Судя по нику у него х64 линух. Картинка с другого сайта.
13 сен 19, 15:16    [21970461]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить