powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрое создание форм
67 сообщений из 67, показаны все 3 страниц
Быстрое создание форм
    #39923463
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В проекте создается 200 инстансов одной формы (тяжелое наследие) примерно таким кодом
Код: pascal
1.
2.
for i := 0 to 200 do
  MyForm := TMyForm.Create;



В итоге на это все уходит 12 секунд. "Тормозит" метод ReadState. Т.е. непосредственно вычитывание формы из dfm. Можно это как-то ускорить?

Про создавать одну форму и перенастраивать ее знаю. Когда-то сделаю. Создавать форму при первом обращении к ней, пожалуй, еще сложнее, чем создавать одну. Тяжелый легаси код. Сейчас интересует именно как ускорить чтение dfm. Может Можно как-то клонировать уже созданную форму?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923465
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повесить окно "Загрузка форм"
Это значительно ускорит процесс чтения
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923470
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
Повесить окно "Загрузка форм"
Это значительно ускорит процесс чтения
Это в смысле шутка такая? Чтобы пользователь не нервничал?
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923471
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если 200 форм не видны на экране, то зачем их создавать ?
Проще потратить время на вычистку Автосоздаваемых форм, чтем пытаться что-то изменить
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923474
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
Проще потратить время на вычистку Автосоздаваемых форм, чтем пытаться что-то изменить
Они не в автосоздаваемых формах
DimaBr
Если 200 форм не видны на экране, то зачем их создавать ?
Каждая форма привязана к управляющему объекту. И для каждого объекта создается своя форма. Потом показывается форма для выбранного объекта. При изменении состояния объекта он изменяет что-то на своей форме.

Еще раз
_Vasilisk_
Про создавать одну форму и перенастраивать ее знаю. Когда-то сделаю.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923478
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Сейчас интересует именно как ускорить чтение dfm


вы точно уверены, что именно чтение .dfm занимает столько время, а не пост-обработка?

Возможно, там дело в датасетах, у которых свойство .Active = true. Или еще что-нибудь долгое происходит в конструкторе.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923479
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

создавать контролы в рантайме?
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923484
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Чтобы пользователь не нервничал?
да, за наблюдением анимации прогресса им возможно будет комфортнее
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923485
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён
вы точно уверены, что именно чтение .dfm занимает столько время, а не пост-обработка?
Да. Основное время это между вызовом ReadState и до вызова Loaded
Кроик Семён
Возможно, там дело в датасетах,
Их на форме нет вообще
Кроик Семён
Или еще что-нибудь долгое происходит в конструкторе.
FormCreate для всех форм в сумме выполняется за 600 миллисекунд
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923487
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_, автовыравнивание/сайзинг контролов на форме используется?
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923494
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan
автовыравнивание/сайзинг контролов на форме используется?
Да. Массово
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923500
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Да. Массово
думаю это скорости тоже не добавляет
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923505
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не лечите йодом, лучше рубите.
Лучше день потерять, потом за 5 минут долететь.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923507
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan
думаю это скорости тоже не добавляет
По исходникам как бы так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TCustomForm.ReadState(Reader: TReader);
var
  NewTextHeight: Integer;
  Scaled: Boolean;
begin
  DisableAlign;
  try
    ..............
    inherited ReadState(Reader);
    ..............
  finally
    EnableAlign;
  end;
end;
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923509
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
Не лечите йодом, лучше рубите.
Да похоже, что все к тому идет
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923510
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждая форма привязана к управляющему объекту. И для каждого объекта создается своя форма. Потом показывается форма для выбранного объекта. При изменении состояния объекта он изменяет что-то на своей форме
Мне это напоминает пост про шестиугольники.
Вместо того чтобы нарисовать 200 объектов на одной канве, человек создаёт 200 контролов, потому что ОДИН нужно двигать
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923524
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> В проекте создается 200 инстансов одной формы (тяжелое наследие)

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

_Vasilisk_> "Тормозит" ... вычитывание формы из dfm. Можно это как-то ускорить?

Можно, вариантов несколько.

1. Переработать архитектуру от вычитывания 200 форм.
При чём вряд ли "не создавать одну и перенастраивать" -
ибо тогда все объекты будут в очереди к 1 инстансу?
Я бы скорее предложил создавать (вычитывать из dfm) 1
форму, а потом в цикле создавать новые чистые инстансы
и клонировать/копировать в них первую форму.

2. Сделать своего наследника, который читать будет не из
dfm, а из своего стрима - с учетом файлового кеша не знаю
насколько это ускорит, но проверить как вариант можно.

3. Сделать своего наследника, который будет не читать из
dfm, а тупо клонировать объект, переданный параметром -
этакая вариация п.1.

_Vasilisk_> Создавать форму при первом обращении к ней,
_Vasilisk_> пожалуй, еще сложнее, чем создавать одну.

Это я не понял.

_Vasilisk_> Может Можно как-то клонировать уже созданную форму?

Конечно, можно. RTTI, например. В последних версиях и
готовые методы появились, наверное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923528
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
В проекте создается 200 инстансов одной формы (тяжелое наследие)

Я не спрашиваю, кто это придумал - и так ясно, что инопланетянин. Но мне очень интересно - зачем? Какую задачу он решал таким образом?

_Vasilisk_
"Тормозит" метод ReadState.

Точно он сам? Или таки выполнение различных методов свойств и прочих инициализаций из него?

_Vasilisk_
Т.е. непосредственно вычитывание формы из dfm. Можно это как-то ускорить

Единственное, что мне приходит в голову - взять из Classes.pas исходники TReader и на их основе сделать свой reader, применяющий каждую считанную строчку к 200-м формам разом.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923534
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Это то прежнее место работы или уже новое?
Прежнее. Проект огромен и куски рефракторятся только если прижмет и есть свободное время.
Гаджимурадов Рустам
При чём вряд ли "не создавать одну и перенастраивать" - ибо тогда все объекты будут в очереди к 1 инстансу?
Там даже очередей не нужно будет. Нет формы - ничего не делаем. Только потом когда форма у объекта появится ее нужно будет довести до текущего состояния объекта
Гаджимурадов Рустам
Я бы скорее предложил создавать (вычитывать из dfm) 1 форму, а потом в цикле создавать новые чистые инстансы и клонировать/копировать в них первую форму.
Вот этого и хочу. RTFM что?
Гаджимурадов Рустам
2. Сделать своего наследника, который читать будет не из dfm, а из своего стрима - с учетом файлового кеша не знаю насколько это ускорит, но проверить как вариант можно.
А смысл? Если dfm тянется из ресурсов экзешника, который уже загружен в память. Где здесь вообще файловая система?
Гаджимурадов Рустам
_Vasilisk_> Создавать форму при первом обращении к ней,
_Vasilisk_> пожалуй, еще сложнее, чем создавать одну.
Это я не понял
Код: pascal
1.
2.
3.
4.
5.
6.
function TMyObject.GetForm: TMyForm;
begin
  if  FForm = nil then
    FForm := TMyForm.Create(nil);
  Result := FForm;
end;


Гаджимурадов Рустам
Конечно, можно. RTTI, например
И куда смотреть? Тупо рекурсивно перебирать все published свойства и копировать их с эталона?
Гаджимурадов Рустам
В последних версиях и готовые методы появились, наверное.
Пока XE3
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923535
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
_Vasilisk_> Может Можно как-то клонировать уже созданную форму?

Конечно, можно. RTTI, например. В последних версиях и
готовые методы появились, наверное.

Я думаю, коллеге стоит уточнить вопрос: "Можно ли клонировать уже созданную форму так, чтобы это получилось быстрее, чем десериализацией?"
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923539
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Но мне очень интересно - зачем? Какую задачу он решал таким образом?
Независимость отображения каждого объекта. На старте проекта объектов было не более 10.
softwarer
Точно он сам?
Ну как точно? В Classes тайминги особо не поставишь. Смотрю по двум чекпойнам: вызов TForm.ReadState и вызов TForm.Loaded. По идее, вся инициализация должна происходить в методе Loaded
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923544
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Ну как точно? В Classes тайминги особо не поставишь.

Думаю, если скомпилировать с отладочными dcu, AQTime ответил на этот вопрос. А так очень легко может быть, что оптимизироваться будет то, что и так проскакивает за доли секунды.

_Vasilisk_
Смотрю по двум чекпойнам: вызов TForm.ReadState и вызов TForm.Loaded. По идее, вся инициализация должна происходить в методе Loaded

Это какая-то в высшей степени странная идея.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923548
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Вот этого и хочу. RTFM что? И куда смотреть?
_Vasilisk_> Тупо рекурсивно перебирать все published свойства
_Vasilisk_> и копировать их с эталона?

Типа того, там несложно. Примеры приводились и у нас IIRC,
и на SO наверняка есть. Я помню упоминания, что соотв. код
есть где-то и внутрях VCL (или RTL), но в каком методе -
искать лень. Для примера https://habr.com/en/post/204678


_Vasilisk_> А смысл? Если dfm тянется из ресурсов экзешника, который
_Vasilisk_> уже загружен в память. Где здесь вообще файловая система?

Ну да, считай то же самое. Я думал ты их снаружи (из БД и пр.)
читаешь, собираешь. Тогда забудь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923550
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer> чтобы это получилось быстрее, чем десериализацией?"

Это довольно редкая прикладная задача: если кто-то не
сталкивался с ней реально - вряд ли сможет подсказать точно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923555
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
AQTime
Где его искать? Он вроде установлен, но я нигде его не вижу
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923575
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
По исходникам как бы так
тогда может я и мимо, просто вспомнилось что где-то вроде с этим впирался
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923592
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
AQTime
Падает программа при запуске из под профайлера. Стандартное Windows сообщение "Работа программы прекращена"

Имя сбойного модуля: AQNATPROF.DLL, версия: 7.50.1260.86, метка времени: 0x503f5b51
Код исключения: 0xc00001a5
Путь сбойного модуля: C:\PROGRAM FILES (X86)\SMARTBEAR\AQTIME 7\BIN\EXTENSIONS\AQNATPROF.DLL
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923595
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
softwarer
AQTime
Падает программа при запуске из под профайлера. Стандартное Windows сообщение "Работа программы прекращена"

Ну что я могу сказать... ошибка в не в профайлере :)
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923599
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Ну что я могу сказать... ошибка в не в профайлере :)
Ну не знаю
_Vasilisk_
Путь сбойного модуля: C:\PROGRAM FILES (X86)\SMARTBEAR\AQTIME 7\BIN\EXTENSIONS\AQNATPROF.DLL
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923606
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Падает программа при запуске из под профайлера
7-я ломаная мне не попадалась но и 5 и 6 тоже бывало стабильно валились, обходил помнится аттачем к уже запущенному процессу
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923613
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan
обходил помнится аттачем к уже запущенному процессу
How AQtime Standard for Embarcadero RAD Studio XE Differs From AQtime Pro
...............
The “Attach-to-Process” feature is not available, that is, you cannot attach to existing processes. To profile an application, you have to run it from AQtime.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923618
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно перекрыть ReadState и отложить реальную загрузку контролов по времени (таймер, onIdle и т.д.).
Можно подменить переменную формы ленивой загрузкой:
Код: pascal
1.
2.
3.
4.
5.
6.
var _frmMy: TMyForm = nil;

function frmMy: TMyForm;
  if _frmMy = nil then
    _frmMy := TMyForm.Create;
 Exit(_frmMy)
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923683
L1G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_, я бы попробовал сконвертить dfm в код. Если тормозит именно десериализация, то должно ускориться.
Помнится, была утилитка под названием "dfm2pas" и в GExpert'ах был пункт меню для этого.
Возможно, оба варианта устарели и лучше поискать что-нибудь поновее для этого.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923699
Ghost Writer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Сейчас интересует именно как ускорить чтение dfm. Может Можно как-то клонировать уже созданную форму?
Не знаю, быстрее ли это. Просто вспомнил, что есть такое
http://delphiworld.narod.ru/base/clone_form.html
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923704
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ghost Writer
Не знаю, быстрее ли это. Просто вспомнил, что есть такое
http://delphiworld.narod.ru/base/clone_form.html

Это не может быть быстрее
Код: pascal
1.
ms.ReadComponent(newform);
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923727
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При изменении состояния объекта он изменяет что-то на своей форме

Объект не должен знать ни о каких формах. Он должен изменять свои свойства. Одна единственная форма должна подключаться к любому объекту и в зависимости от свойств рисовать себя и на себе что надо.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923786
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L1G
_Vasilisk_, я бы попробовал сконвертить dfm в код. Если тормозит именно десериализация, то должно ускориться.
Помнится, была утилитка под названием "dfm2pas" и в GExpert'ах был пункт меню для этого.
Возможно, оба варианта устарели и лучше поискать что-нибудь поновее для этого.

А смысл? Десериализация именно это и делает.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923792
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC
Одна единственная форма должна подключаться к любому объекту
Так может они там одновременно открыты
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923805
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan
LocksmithPC
Одна единственная форма должна подключаться к любому объекту
Так может они там одновременно открыты

Все 100+?
В любом случае, если создавать форму в момент открытия, то тормоза будут не так заметны, как создание 100+ форм при загрузке приложения.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923842
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
Все 100+?
я не в курсе. указываю что "одной единственной" всяко может не хватить
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923852
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavan
alekcvp
Все 100+?
я не в курсе. указываю что "одной единственной" всяко может не хватить


Не надо цепляться к словам. Если это информтабло сотни объектов, то нужна одна форма (№1) для мониторинга этой сотни и одна форма (№2) для детализации. Пусть форм №2 будет несколько, если надо сравнить детализацию 15 объектов
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923909
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LocksmithPC, я и не цепляюсь а лишь указываю что OP там виднее как оно бывает
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923953
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L1G> сконвертить dfm в код. Если тормозит именно десериализация, то должно ускориться.
L1G> Помнится, была утилитка под названием "dfm2pas" и в GExpert'ах был пункт меню для этого.

Интересная идея, кстати. "Хардкодирование" вместо "клонирования".

Попробовать стоит, ИМХО.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923972
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Интересная идея, кстати. "Хардкодирование" вместо "клонирования".
Попробовать стоит, ИМХО.
Я тут подумал, что все идеи с копированием свойств через RTTI, конвертацией dfm в pas быстрее не будут.

Например, банальная установка координат компонента

Код: 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.
procedure TControl.SetLeft(Value: Integer);
begin
  SetBounds(Value, FTop, FWidth, FHeight);
  Include(FScalingFlags, sfLeft);
  if csReading in ComponentState then
    FExplicitLeft := FLeft;
end;

procedure TControl.SetBounds(ALeft, ATop, AWidth, AHeight: Integer);
begin
  if CheckNewSize(AWidth, AHeight) and
    ((ALeft <> FLeft) or (ATop <> FTop) or
    (AWidth <> FWidth) or (AHeight <> FHeight)) then
  begin
    InvalidateControl(Visible, False);
    FLeft := ALeft;
    FTop := ATop;
    FWidth := AWidth;
    FHeight := AHeight;
    UpdateAnchorRules;
    UpdateExplicitBounds;
    Invalidate;
    Perform(WM_WINDOWPOSCHANGED, 0, 0);
    RequestAlign;
    if not (csLoading in ComponentState) then Resize;
  end;
end;

Т.е. Resize при загрузке из dfm вызывается лишь однажды, а так будет вызываться 4 раза. И в VCL строчка
Код: pascal
1.
if not (csLoading in ComponentState) then

встречается очень часто.

Разве что попробовать Reader модифицировать, чтобы сам парсинг dfm происходил один раз
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39923986
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я отказался от идеи хранения кода DFM. Получается очень много неудобств.
У меня простое создание компонент по их свойствам, перечисленным в ХМЛ. Все программно. Ничего лишнего.
Кода понадобилось немного.
Да, есть недостатки, но преимуществ намного больше, ИМХО.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924022
jack_vosmerkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
страно что еще некто не кричал *нельзя так делать* и *ты что с урала?*
раньше вроде так было когда про подобные безумие спрашивали
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924023
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk> Я тут подумал, что все идеи с копированием свойств
_Vasilisk> через RTTI, конвертацией dfm в pas быстрее не будут.

А ты профайлером посмотрел, что конкретно больше всего
тормозит при создании? И насколько тяжелая форма вообще?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924025
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jack_vosmerkin> страно что еще некто не кричал *нельзя так делать* и *ты что с урала?*

Уже пофыркали на первой странице. Да и автор в стартовом посте
указал, что наследие, что понимает и что будет переделывать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924027
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
А ты профайлером посмотрел, что конкретно больше всего тормозит при создании?
Нет. AQTime так и не запустился

Гаджимурадов Рустам
И насколько тяжелая форма вообще?
Не тяжелая. Штук 5 тулбаров, PageControl с тремя вкладками, два фрейма с чартом и тулбарами, стандартный TTreeView
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924042
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 200шт это как раз тяжелая.

Посмотри, может какие-то вкладки можно создавать
не сразу, а по "активации", или чарт хотя бы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924060
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
А ты профайлером посмотрел, что конкретно больше всего тормозит при создании?
Вот, собственно данные профайлера.

Профилировались все методы классов TReader, TComponent, TControl, TWinControl, TCustomForm. Сортировка по общему времени

Исходник ReadStr
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function TReader.ReadStr: string;
var
  L: Byte;
  B: TBytes;
begin
  Read(L, SizeOf(Byte));
  SetLength(B, L);
  Read(B, L);
  Result := TEncoding.UTF8.GetString(B);
end;
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924111
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напоминаю, только топор
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924151
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

А современные делфи ещё позволяют бинарные .dfm использовать или нет уже?
Или оно на рантайм не влияет?
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924157
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

судя по профилю, это как раз бинарный dfm.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924160
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

позволяет. вижу иногда старые формы в бинарном виде, вполне работают. другое дело что врятли это сильно поможет в данном случае.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924175
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
alekcvp,
судя по профилю, это как раз бинарный dfm.

Если бинарный, почему тогда ReadStr() на первом месте?
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924183
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
Если бинарный, почему тогда ReadStr() на первом месте?

Потому что недостаточно судить по названию. Стоит ещё заглянуть, что внутри этого ReadStr написано, тем более что топикстартер любезно опубликовал код.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924185
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Вот, собственно данные профайлера.

Там сортировка кривая, но вообще овердофига, конечно.
Надо проверять все варианты без десериализации, однозначно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39924187
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

да, становится привлекательной идея сгенерировать соответствующий dfm код. Быстро делается и должно убрать основные траты.
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39926072
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ проекте создается 200 инстансов одной формы
Штук 5 тулбаров, PageControl с тремя вкладками, два фрейма с чартом и тулбарами, стандартный TTreeView
Как же хочется хоть краешком глаза посмотреть на эти 200 форм.....
Может пора оживить этот топик ?
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39929536
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> Вот

Чем закончились изыскания?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39929556
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Чем закончились изыскания?
Забил до глобального рефракторинга
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39929561
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажи интерфейс с формами, очень интересно
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39929569
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да что там показывать, 200 одинаковых форм...
Наверняка форма-карточка, вопрос только для
чего - это какие-то мониторы активности или
текущие таски итп.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39929602
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам, в трейдинговых терминалах например порой много стаканов у людей открыто бывает
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39929620
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это и есть один из примеров мониторов активности.
С той лишь разницей, что в трейдинговых терминалах
может быть несколько "окон" на один "объект" - по 4,
например, тогда 4 по 50 (экаунтов, например) - как раз
200 форм и наберётся (но, наверное, это что-то другое).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое создание форм
    #39929642
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

не, влёгкую окон по 7-10 на каждый стол, а их штук 7 бывает нужно. И то если только российский рынок брать
у профи скорее всего больше
...
Рейтинг: 0 / 0
67 сообщений из 67, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Быстрое создание форм
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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