powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как преобразовать строку с именем класса в тип этого класса?
15 сообщений из 40, страница 2 из 2
Как преобразовать строку с именем класса в тип этого класса?
    #39861649
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Linux_64В дальнейшем я полностью откажусь от родной среды и буду пользоваться своей и программы будут не многим хуже, чем у оригинала.
времени не жалко? "Эту б энергию да мирное русло" ©


GatorСудя по нику у него х64 линух.

видя скрин с рабочим столом выше, вериться с трудом. Хрестоматийный пример велосипедописателя.
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39864671
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и как такое преобразовать?

Код: sql
1.
'.....?tip=Продажа&p=2'



"Продажа" превращается в кракозябры

ал-ля
Код: sql
1.
?tip='#$1F'@>4060&p=2



здесь уже наоборот надо делать - TIdURI.URLEncode()
неужели нет какой-то "серебряной пули"?
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39868381
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.
// NameObj = например 'Form1: TForm1'
// NameEvent = например 'OnDblClick = NewForm1DblClick'
// B = Флаг записи или очистки строки, True - запишем, False - сотрем
Procedure ScanDFM(NameObj, NameEvent: string = '', B: boolean);
var 
 TS: TStringList;
 P: string;
 i: integer;
begin
 P:= ExtractFilePath(Application.ExeName)+'EXE\';
 try
  TS:= TStringList.Create;
  TS.LoadFromFile(P+'unit1.dfm');
  // Сканируем файл и находим описание объекта, например
  // object Form1: TForm1 или ListBox22: TListBox
  // i будет содержать номер найденой строки
  if B = True then
  begin
   // Запишем строку OnDblClick = NewForm1DblClick
   for i:= 0 to TS.Count-1 do
   if Pos('object '+NameObj, TS.Strings[i])<>0 then
   begin
    break;
   end;
   TS.Insert(i+1, NameEvent);
  end
  else
   begin
    // Удалим строку OnDblClick = NewForm1DblClick
    for i:= 0 to TS.Count-1 do
    if Pos(NameEvent, TS.Strings[i])<>0 then
    begin
     break;
    end;
   TS.Delete(i);
   end;
  // Сохраним результат
  TS.SaveToFile(P+'unit1.dfm');
 finally
  FreeAndNil(TS);
 end;
end;
// вызов: 
// ScanDFM('Memo247: TMemo','OnChange = Memo247Change', True); - Запишем
// ScanDFM('','OnChange = Memo247Change', False); - Стираем
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39868385
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
// NameObj = например 'Form1: TForm1'
// NameEvent = например 'OnDblClick = NewForm1DblClick'
// B = Флаг записи или очистки строки, True - запишем, False - сотрем
Procedure ScanDFM(NameObj, NameEvent: string = '', B: boolean);
var 
 TS: TStringList;
 P: string;
 i: integer;
begin
 P:= ExtractFilePath(Application.ExeName)+'EXE\';
 try
  TS:= TStringList.Create;
  TS.LoadFromFile(P+'unit1.dfm');
  // Сканируем файл и находим описание объекта, например
  // object Form1: TForm1 или ListBox22: TListBox
  // i будет содержать номер найденой строки
  if B = True then
  begin
   // Запишем строку OnDblClick = NewForm1DblClick
   for i:= 0 to TS.Count-1 do
   if Pos('object '+NameObj, TS.Strings[i])<>0 then
   begin
    break;
   end;
   TS.Insert(i+1, NameEvent);
  end
  else
   begin
    // Удалим строку OnDblClick = NewForm1DblClick
    for i:= 0 to TS.Count-1 do
    if Pos(NameEvent, TS.Strings[i])<>0 then
    begin
     break;
    end;
   TS.Delete(i);
   end;
  // Сохраним результат
  TS.SaveToFile(P+'unit1.dfm');
 finally
  FreeAndNil(TS);
 end;
end;
// вызов: 
// ScanDFM('Memo247: TMemo','OnChange = Memo247Change', True); - Запишем
// ScanDFM('','OnChange = Memo247Change', False); - Стираем


И что же ты хочешь?
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39868389
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Linux_64Я нашёл способ как парсить DFM файл и добавить в него ссылку на метод.
Вспомнилось: "Крупный учёный - это тот, кто успешно решает мелкие проблемы, стоящие на пути к глобальному заблуждению".
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39868455
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вас не удивляет, что никто не одобряет вашу затею ?
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39868456
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrВас не удивляет, что никто не одобряет вашу затею ?
Гениев никогда не понимают. Им завидуют, забрасывают грязью и ставят палки в колёса.
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39868465
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, Дима, я сделал! Все работает! А на чужое мнение мне плевать. Спасибо за помощь. Тема закрыта.
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39868470
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ нашёл способ как парсить DFM файл и добавить в него ссылку на метод.
Все работает.
А в элемент коллекции тоже работает ?
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39869240
vanderer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonLinux_64,

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

https://www.lazarus-ide.org/
https://plugins.jetbrains.com/plugin/7340-i-pascal
Это было жестоко...
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39871373
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, да в ильмените коллекции тоже! И в MenuItem и в TreeView, все работает. Вычисляем нужную строку с объектом и вставляем либо удаляем ее из dfm-файла. Признаюсь, немного пришлось доработать напильником и обратите внимание!, не важно где именно будет дописана нужная строка с указателем на метод, в начале или в конце. Как знать, как именно разработчики Borland решили эту проблему. Возможно именно этим путём. Но как бы там ни было. Это работает. Практически полноценная, автономная среда, общим размером 9 МБт. Возникли некоторые проблемы с деревом объектов, но за два дня я это решил. Осталось немного разукрасить среду, убрать лишние переменные , комментарии и версия 1.0 готова!
Сейчас тестирую на разных компонентах. Есть малые баги , но в целом на работу самой среды они не влияют. В версии 2.0 планирую добавить в проект библиотеку KOL, это позволит уменьшить размер исполняемого файла приблизительно в 10 раз. Но это произойдёт месяца через три. Факт: можно пользоваться средой прямо с флешки в интернет-клубе и написать простенькую прогу и тут же скомпилировать ее. Для меня самое оно.
Продолжение следует...
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39871375
Linux_64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, да в ильмените коллекции тоже! И в MenuItem и в TreeView, все работает. Вычисляем нужную строку с объектом и вставляем либо удаляем ее из dfm-файла. Признаюсь, немного пришлось доработать напильником и обратите внимание!, не важно где именно будет дописана нужная строка с указателем на метод, в начале или в конце. Как знать, как именно разработчики Borland решили эту проблему. Возможно именно этим путём. Но как бы там ни было. Это работает. Практически полноценная, автономная среда, общим размером 9 МБт. Возникли некоторые проблемы с деревом объектов, но за два дня я это решил. Осталось немного разукрасить среду, убрать лишние переменные , комментарии и версия 1.0 готова!
Сейчас тестирую на разных компонентах. Есть малые баги , но в целом на работу самой среды они не влияют. В версии 2.0 планирую добавить в проект библиотеку KOL, это позволит уменьшить размер исполняемого файла приблизительно в 10 раз. Но это произойдёт месяца через три. Факт: можно пользоваться средой прямо с флешки в интернет-клубе и написать простенькую прогу и тут же скомпилировать ее. Для меня самое оно.
Продолжение следует...
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39871390
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Элемент коллекции, это не начало компонента
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39871407
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrЭлемент коллекции, это не начало компонентаВот в башке свербит:
При желании можно сделать, но что он сделает с чужими компонентами, интерфейсами...
А "Элементом коллекции" может быть что угодно. От Коллекционера зависит, чего он коллекционирует. Например, всё, что имеет IUnknown :)
...
Рейтинг: 0 / 0
Как преобразовать строку с именем класса в тип этого класса?
    #39871410
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorПри желании можно сделать
Вместо того, чтобы использовать стандартные методы ObjectBinaryToText/ObjectTextToBinary изобретается какой то псевдо-парсер
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как преобразовать строку с именем класса в тип этого класса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]