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

Откуда: Казань
Сообщений: 6409
Linux_64
В дальнейшем я полностью откажусь от родной среды и буду пользоваться своей и программы будут не многим хуже, чем у оригинала.

времени не жалко? "Эту б энергию да мирное русло" ©


Gator
Судя по нику у него х64 линух. Картинка с другого сайта.

видя скрин с рабочим столом выше, вериться с трудом. Хрестоматийный пример велосипедописателя.
13 сен 19, 16:21    [21970523]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13279
и как такое преобразовать?

'.....?tip=Продажа&p=2'


"Продажа" превращается в кракозябрыКартинка с другого сайта.
ал-ля
?tip='#$1F'@>4060&p=2


здесь уже наоборот надо делать - TIdURI.URLEncode()
неужели нет какой-то "серебряной пули"?
20 сен 19, 15:03    [21975389]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 103
Вернёмся к нашим баранам...
Я нашёл способ как парсить DFM файл и добавить в него ссылку на метод.
Все работает.
// 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); - Стираем
28 сен 19, 13:28    [21981626]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
ёёёёё
Member

Откуда:
Сообщений: 939
Linux_64
Вернёмся к нашим баранам...
Я нашёл способ как парсить DFM файл и добавить в него ссылку на метод.
Все работает.
// 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); - Стираем

И что же ты хочешь?
28 сен 19, 13:39    [21981630]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58887
Блог
Linux_64
Я нашёл способ как парсить DFM файл и добавить в него ссылку на метод.

Вспомнилось: "Крупный учёный - это тот, кто успешно решает мелкие проблемы, стоящие на пути к глобальному заблуждению".
28 сен 19, 13:59    [21981637]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11284
Вас не удивляет, что никто не одобряет вашу затею ?
28 сен 19, 18:32    [21981724]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58887
Блог
DimaBr
Вас не удивляет, что никто не одобряет вашу затею ?

Гениев никогда не понимают. Им завидуют, забрасывают грязью и ставят палки в колёса.
28 сен 19, 18:35    [21981725]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 103
DimaBr, Дима, я сделал! Все работает! А на чужое мнение мне плевать. Спасибо за помощь. Тема закрыта.
28 сен 19, 19:28    [21981738]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11284
автор
Я нашёл способ как парсить DFM файл и добавить в него ссылку на метод.
Все работает.

А в элемент коллекции тоже работает ?
28 сен 19, 19:52    [21981745]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
vanderer
Member

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

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

https://www.lazarus-ide.org/
https://plugins.jetbrains.com/plugin/7340-i-pascal

Это было жестоко...
30 сен 19, 15:39    [21982862]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 103
DimaBr, да в ильмените коллекции тоже! И в MenuItem и в TreeView, все работает. Вычисляем нужную строку с объектом и вставляем либо удаляем ее из dfm-файла. Признаюсь, немного пришлось доработать напильником и обратите внимание!, не важно где именно будет дописана нужная строка с указателем на метод, в начале или в конце. Как знать, как именно разработчики Borland решили эту проблему. Возможно именно этим путём. Но как бы там ни было. Это работает. Практически полноценная, автономная среда, общим размером 9 МБт. Возникли некоторые проблемы с деревом объектов, но за два дня я это решил. Осталось немного разукрасить среду, убрать лишние переменные , комментарии и версия 1.0 готова!
Сейчас тестирую на разных компонентах. Есть малые баги , но в целом на работу самой среды они не влияют. В версии 2.0 планирую добавить в проект библиотеку KOL, это позволит уменьшить размер исполняемого файла приблизительно в 10 раз. Но это произойдёт месяца через три. Факт: можно пользоваться средой прямо с флешки в интернет-клубе и написать простенькую прогу и тут же скомпилировать ее. Для меня самое оно.
Продолжение следует...
3 окт 19, 20:40    [21986268]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Linux_64
Member

Откуда: Киев
Сообщений: 103
DimaBr, да в ильмените коллекции тоже! И в MenuItem и в TreeView, все работает. Вычисляем нужную строку с объектом и вставляем либо удаляем ее из dfm-файла. Признаюсь, немного пришлось доработать напильником и обратите внимание!, не важно где именно будет дописана нужная строка с указателем на метод, в начале или в конце. Как знать, как именно разработчики Borland решили эту проблему. Возможно именно этим путём. Но как бы там ни было. Это работает. Практически полноценная, автономная среда, общим размером 9 МБт. Возникли некоторые проблемы с деревом объектов, но за два дня я это решил. Осталось немного разукрасить среду, убрать лишние переменные , комментарии и версия 1.0 готова!
Сейчас тестирую на разных компонентах. Есть малые баги , но в целом на работу самой среды они не влияют. В версии 2.0 планирую добавить в проект библиотеку KOL, это позволит уменьшить размер исполняемого файла приблизительно в 10 раз. Но это произойдёт месяца через три. Факт: можно пользоваться средой прямо с флешки в интернет-клубе и написать простенькую прогу и тут же скомпилировать ее. Для меня самое оно.
Продолжение следует...
3 окт 19, 20:42    [21986270]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11284
Элемент коллекции, это не начало компонента
3 окт 19, 21:53    [21986293]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
Gator
Member

Откуда: Москва
Сообщений: 14977
DimaBr
Элемент коллекции, это не начало компонента
Вот в башке свербит:
При желании можно сделать, но что он сделает с чужими компонентами, интерфейсами...
А "Элементом коллекции" может быть что угодно. От Коллекционера зависит, чего он коллекционирует. Например, всё, что имеет IUnknown :)
3 окт 19, 23:38    [21986326]     Ответить | Цитировать Сообщить модератору
 Re: Как преобразовать строку с именем класса в тип этого класса?  [new]
DimaBr
Member

Откуда:
Сообщений: 11284
Gator
При желании можно сделать

Вместо того, чтобы использовать стандартные методы ObjectBinaryToText/ObjectTextToBinary изобретается какой то псевдо-парсер
4 окт 19, 00:03    [21986333]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Delphi Ответить