Войти
ПрограммированиеФорумОбщее

Вопросы по Delphi (56 стр)

Страницы: 153 54 55 56 57 58 Следующая »
#825
17:20, 19 ноя 2022

skalogryz
> вангую, что такое безымянный объект, на самом деле "лежит" внутри "списка"
Да, безымянный объект действительно лежит внутри поименованного, но я думал это и так очевидно. Просто сам факт что внутри именованного объекта, имя которого соответствует некоторой структуре внутри кода, можно добавлять вот такие безымянные не прибегая к перекомпиляции приложения и всё будет работать. Этот момент я и хотел уточнить.

#826
18:31, 19 ноя 2022

Вообщем, что я понял на текущий момент:
1. dfm-файл при компиляции конвертируется в очередной текстовый формат, но более компактный. В дальнейшем приложение парсит именно его.
2. Парсинг res-файлов происходит из вызова функции ReadRootComponent( nil ); То есть имя и тип корневого компонента читаются из res-файла
3. Затем происходит чтение дочерних компонентов уже внутри корневого, они от него как бы наследуются, но на уровне WinAPI, а на уровне самого Delphi, там просто линейный список этих компонентов в классе TScreen.
4. для пользовательского класса, где на компоненты указывают переменные происходит автоматическая линковка объектов, созданных при парсинге res-файла с членами этого класса. Если у объекта нет своего имени, то он просто остаётся в списке класса TScreen и ведёт себя как контрол соответствующего класса, но из пользовательского кода к нему нет явного доступа (как правило он просто не нужен).

#827
(Правка: 19:30) 19:07, 19 ноя 2022

g-cont
> значит гарантированно в массиве ClassTable не может быть двух одинаковых имён,
могут быть два одинаковых имени.
имя класса в делфи не уникально. Т.к. classname это лишь строка из 256 символов, и НЕ содержит в себе имени модуля (как это делает имя класса в шарпе).
т.е. ты в двух разных модулях можешь объявить два разных класса с одним и тем же именем.
И один может быть наследником другого....

Более того, это можно использовать для разного рода... хаков.

Например, переобъявив свой собственный класс.
Изначально:

unit Unit1;

uses ...

type
  TForm1= class
   ...
    Button1 : TButton;

добавляем свою "прослойку"...

unit Unit1;

uses ...

type
  TButton  = class(StdCtrls.TButton)
   ...
  end;
 
  TForm1= class
   ...
    Button1 : TButton;


В итоге, даже если Delphi честно дизайнила кнопочки основываясь на TButton из StdCtrls, в рантайме будут создавать объекты класса Unit1.TButton.

#828
13:07, 20 ноя 2022

О как! Получается вся эта замута с RegGroups и TClassFinder для того и нужна, чтобы выявлять разные классы с одинаковыми именем, но в разных модулях? Меня смутило что там классы группируются по какому-то признаку. Вот видимо по имени юнита.

Прошло более 7 месяцев
#829
14:17, 24 июня 2023

В Lazarus столкнулся с морганием TImage.Canvas. Попытался отрисовывать вначале в растр, потом его отрисовывать на TImage.Canvas. Т.е. двойная буферизация. Всё равно моргает! Блинкает Image.Canvas.CopyRect! Причём это не зависит от размера TRect, одинаково на 960х720 и на 10х10, причём, моргает весь TImage, а не только область TRect. А если поместить Image.Canvas.CopyRect в событие OnPaint, то получается нон-стоп моргание окна и даже его подвисание.

+ Показать
#830
14:30, 24 июня 2023

true_bump, надо смотреть реализацию.
Есть моменты, когда ты отрисовываешь изображение, и есть моменты когда форма сама себя перерисовывает. Эти моменты совпадают и получаем мерцание. Когда форма перерисовывается, она так же должна иметь информацию об отрисовываемом изображении, но видимо этого не содержит.
  У Delphi тоже есть такое поведение в VCL.

#831
22:21, 24 июня 2023

g-cont
> Моя идея заключается в том, чтобы dfm-скрипты лежали снаружи и редактировались
> для уже скомпилированного приложения.
> А чтобы реализовывать новый функционал для них, механизм будет построен не на
> каллбэках, а на системе команд. Конечно система команд не предполагает обратной
> связи, но всё равно это будет гибче, чем текущий механизм.
Если это твоё приложение, то ты можешь делать как хочешь. Я например в студенческие годы делал тестовую систему для универа. Так у меня там dfm вообще гонялись по сети, и в рантайме создавался весь ui с вопросом, чекбоксами, инпутами и т.п.

#832
(Правка: 26 июня 2023, 4:40) 18:28, 25 июня 2023

true_bump
Возможно, включен TImage.Transparent и перерисовывается фон.
> Попытался отрисовывать вначале в растр, потом его отрисовывать на TImage.Canvas. Т.е. двойная буферизация
У TImage свой растр внутри, рисуй в TImage.Picture.Canvas, потом TImage.Update, если он сам не обновится.
Предпочитаю рисовать на TPaintBox, положенный на TPanel или TScrollBox, там не моргает

#833
20:53, 25 июня 2023

true_bump
есть вариант не CopyRect-ом отрисовывать картинку?

#834
10:48, 26 июня 2023

Давно я тут ничего не писал. Ориентировочно в ноябре продолжу портирование.

#835
15:04, 26 июня 2023

Динозавры которые на дельфи ... Вы, там еще не померли ? :)

#836
4:57, 27 июня 2023

инетресно чем вы там занимаетесь в делфи? под заказ или в свободное время просто?

#837
6:16, 27 июня 2023

И заказы выполняем, когда есть и новую версию ZenGL выпускаем.
С какой-то стороны совсем сырую версию...

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

+ таймкоды
Прошло более 6 месяцев
#838
13:34, 6 янв 2024

есть для Delphi XE примеры использования msvcrt?

#839
16:22, 6 янв 2024

Mirrel
> есть для Delphi XE примеры использования msvcrt?
А зачем тебе в делфи плюсовый рантайм?

Страницы: 153 54 55 56 57 58 Следующая »
ПрограммированиеФорумОбщее