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

Откуда: Казань
Сообщений: 3474
_Vasilisk_
По исходникам как бы так
тогда может я и мимо, просто вспомнилось что где-то вроде с этим впирался
6 фев 20, 17:34    [22074994]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11498
softwarer
AQTime
Падает программа при запуске из под профайлера. Стандартное Windows сообщение "Работа программы прекращена"

Имя сбойного модуля: AQNATPROF.DLL, версия: 7.50.1260.86, метка времени: 0x503f5b51
Код исключения: 0xc00001a5
Путь сбойного модуля: C:\PROGRAM FILES (X86)\SMARTBEAR\AQTIME 7\BIN\EXTENSIONS\AQNATPROF.DLL


Сообщение было отредактировано: 6 фев 20, 17:55
6 фев 20, 17:54    [22075022]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 60759
Блог
_Vasilisk_
softwarer
AQTime
Падает программа при запуске из под профайлера. Стандартное Windows сообщение "Работа программы прекращена"

Ну что я могу сказать... ошибка в не в профайлере :)
6 фев 20, 17:55    [22075026]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11498
softwarer
Ну что я могу сказать... ошибка в не в профайлере :)
Ну не знаю
_Vasilisk_
Путь сбойного модуля: C:\PROGRAM FILES (X86)\SMARTBEAR\AQTIME 7\BIN\EXTENSIONS\AQNATPROF.DLL
6 фев 20, 17:57    [22075032]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
vavan
Member

Откуда: Казань
Сообщений: 3474
_Vasilisk_
Падает программа при запуске из под профайлера
7-я ломаная мне не попадалась но и 5 и 6 тоже бывало стабильно валились, обходил помнится аттачем к уже запущенному процессу
6 фев 20, 18:23    [22075047]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11498
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.
6 фев 20, 18:33    [22075056]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
Василий 2
Member

Откуда:
Сообщений: 961
Можно перекрыть ReadState и отложить реальную загрузку контролов по времени (таймер, onIdle и т.д.).
Можно подменить переменную формы ленивой загрузкой:
var _frmMy: TMyForm = nil;

function frmMy: TMyForm;
  if _frmMy = nil then
    _frmMy := TMyForm.Create;
 Exit(_frmMy)
6 фев 20, 18:49    [22075070]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
L1G
Member

Откуда:
Сообщений: 110
_Vasilisk_, я бы попробовал сконвертить dfm в код. Если тормозит именно десериализация, то должно ускориться.
Помнится, была утилитка под названием "dfm2pas" и в GExpert'ах был пункт меню для этого.
Возможно, оба варианта устарели и лучше поискать что-нибудь поновее для этого.
6 фев 20, 22:10    [22075172]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 896
_Vasilisk_
Сейчас интересует именно как ускорить чтение dfm. Может Можно как-то клонировать уже созданную форму?
Не знаю, быстрее ли это. Просто вспомнил, что есть такое
http://delphiworld.narod.ru/base/clone_form.html
6 фев 20, 23:45    [22075220]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
DimaBr
Member

Откуда:
Сообщений: 11496
Ghost Writer
Не знаю, быстрее ли это. Просто вспомнил, что есть такое
http://delphiworld.narod.ru/base/clone_form.html

Это не может быть быстрее
ms.ReadComponent(newform);
7 фев 20, 00:38    [22075228]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
LocksmithPC
Member

Откуда:
Сообщений: 223
При изменении состояния объекта он изменяет что-то на своей форме

Объект не должен знать ни о каких формах. Он должен изменять свои свойства. Одна единственная форма должна подключаться к любому объекту и в зависимости от свойств рисовать себя и на себе что надо.
7 фев 20, 06:03    [22075260]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
Василий 2
Member

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

А смысл? Десериализация именно это и делает.
7 фев 20, 10:27    [22075349]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
vavan
Member

Откуда: Казань
Сообщений: 3474
LocksmithPC
Одна единственная форма должна подключаться к любому объекту
Так может они там одновременно открыты
7 фев 20, 10:33    [22075356]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
alekcvp
Member

Откуда:
Сообщений: 1849
vavan
LocksmithPC
Одна единственная форма должна подключаться к любому объекту
Так может они там одновременно открыты

Все 100+?
В любом случае, если создавать форму в момент открытия, то тормоза будут не так заметны, как создание 100+ форм при загрузке приложения.
7 фев 20, 10:55    [22075372]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
vavan
Member

Откуда: Казань
Сообщений: 3474
alekcvp
Все 100+?
я не в курсе. указываю что "одной единственной" всяко может не хватить
7 фев 20, 11:31    [22075446]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
LocksmithPC
Member

Откуда:
Сообщений: 223
vavan
alekcvp
Все 100+?
я не в курсе. указываю что "одной единственной" всяко может не хватить


Не надо цепляться к словам. Если это информтабло сотни объектов, то нужна одна форма (№1) для мониторинга этой сотни и одна форма (№2) для детализации. Пусть форм №2 будет несколько, если надо сравнить детализацию 15 объектов
7 фев 20, 12:00    [22075472]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
vavan
Member

Откуда: Казань
Сообщений: 3474
LocksmithPC, я и не цепляюсь а лишь указываю что OP там виднее как оно бывает
7 фев 20, 13:17    [22075558]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60873
L1G> сконвертить dfm в код. Если тормозит именно десериализация, то должно ускориться.
L1G> Помнится, была утилитка под названием "dfm2pas" и в GExpert'ах был пункт меню для этого.

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

Попробовать стоит, ИМХО.

Posted via ActualForum NNTP Server 1.5

7 фев 20, 14:46    [22075631]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11498
Гаджимурадов Рустам
Интересная идея, кстати. "Хардкодирование" вместо "клонирования".
Попробовать стоит, ИМХО.
Я тут подумал, что все идеи с копированием свойств через RTTI, конвертацией dfm в pas быстрее не будут.

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

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 строчка
if not (csLoading in ComponentState) then
встречается очень часто.

Разве что попробовать Reader модифицировать, чтобы сам парсинг dfm происходил один раз
7 фев 20, 15:27    [22075658]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
L_argo
Member

Откуда:
Сообщений: 1117
Я отказался от идеи хранения кода DFM. Получается очень много неудобств.
У меня простое создание компонент по их свойствам, перечисленным в ХМЛ. Все программно. Ничего лишнего.
Кода понадобилось немного.
Да, есть недостатки, но преимуществ намного больше, ИМХО.
7 фев 20, 16:35    [22075682]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
jack_vosmerkin
Member

Откуда:
Сообщений: 22
страно что еще некто не кричал *нельзя так делать* и *ты что с урала?*
раньше вроде так было когда про подобные безумие спрашивали
7 фев 20, 18:45    [22075751]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60873
_Vasilisk> Я тут подумал, что все идеи с копированием свойств
_Vasilisk> через RTTI, конвертацией dfm в pas быстрее не будут.

А ты профайлером посмотрел, что конкретно больше всего
тормозит при создании? И насколько тяжелая форма вообще?

Posted via ActualForum NNTP Server 1.5

7 фев 20, 18:49    [22075753]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60873
jack_vosmerkin> страно что еще некто не кричал *нельзя так делать* и *ты что с урала?*

Уже пофыркали на первой странице. Да и автор в стартовом посте
указал, что наследие, что понимает и что будет переделывать.

Posted via ActualForum NNTP Server 1.5

7 фев 20, 18:55    [22075756]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11498
Гаджимурадов Рустам
А ты профайлером посмотрел, что конкретно больше всего тормозит при создании?
Нет. AQTime так и не запустился

Гаджимурадов Рустам
И насколько тяжелая форма вообще?
Не тяжелая. Штук 5 тулбаров, PageControl с тремя вкладками, два фрейма с чартом и тулбарами, стандартный TTreeView
7 фев 20, 19:00    [22075758]     Ответить | Цитировать Сообщить модератору
 Re: Быстрое создание форм  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60873
Для 200шт это как раз тяжелая.

Посмотри, может какие-то вкладки можно создавать
не сразу, а по "активации", или чарт хотя бы.

Posted via ActualForum NNTP Server 1.5

7 фев 20, 19:33    [22075779]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Delphi Ответить