|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
В свежей Delphi 12.2 появился класс TParallelArray. Из записи в блоге. https://blogs.embarcadero.com/faster-delphi-rtl-with-parallel-arrays-and-ordered-dictionaries/ Код: Delphi 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. 46. 47. 48. 49. 50. 51. 52.
Цитата [игнорируется] If I run it on my main computer, an Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz , I get the following results, a nice 585% improvement! (output trimmed to milliseconds for readability) Код: Delphi 1. 2.
Код: Delphi 1.
... |
|||
:
Изменено: 03.10.2024, 11:04 - s62
Нравится:
Не нравится:
|
|||
03.10.2024, 10:43 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Видел, как человек пользовался, но как-то сам не обращал внимания. Удобная вещь вверху окна редактора кода - два выпадающих окна, в левом список классов, в правом - список методов выбранного класса. И, как я понял, в нем же, если класс не выбрано - список процедур/функций (не методов классов) этого модуля. А я всё пользовался поиском и переходом к объявлению (Ctrl+Click). Есть ещё конечно боковое окно структуры модуля, но я им редко до сих пор пользовался, обычно, когда какой-то чужой модуль открывал и искал какие-то классы, методы и т.п., так, оно у меня обычно свернуто. В одном из текущих проектов есть большие модули с большими классами, где много методов, там эта штука удобна наверное. Всё, сейчас после обеда попробую использовать это. p.s. Это - часть того, что называется Navigation toolbar, появилось, оказывается в Delphi XE8, я пользовался из этой панели (тулбара) переходом к разным секциям модуля. https://docwiki.embarcadero.com/RADStudio/Athens//en/Code_Editor#Navigation_Toolbar ... |
|||
:
Изменено: 18.10.2024, 12:15 - s62
Нравится:
Не нравится:
|
|||
18.10.2024, 12:14 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Модуль Sysutils. Код: Delphi 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2025, 14:17 |
|
Заметки о Делфи.
|
|
---|---|
#18+
Столкнулся с небольшим багом в версии 12.2. Запостил в соответствующий раздел сайта Эмбаркадеро (Quality portal). Сегодня поставили статус, что пофиксили в версии 12.3. Но из-за санкций сейчас в РФ нельзя купить и нельзя продлить подписку на Delphi. А у нас кончилась в конце прошлого ноября. Обновления на сайте Эмбаркадеро доступны для клиентов с активной подпиской. Ну, баг не очень серьезный, есть обход. ... |
|
:
|
|
27.03.2025, 13:59 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Один из недостатков языка Delphi (Object Pascal) - что интерфейсы (интерфейсные типы) изначально были привязаны к технологии COM и по-умолчанию в них релизован подсчет ссылок и автоматическое удаление, когда ссылок становится ноль. Это усложняет использование интерфейсов как просто контрактов, как они например широко используются в Java. Например вы создаете обычным образом объект, который реализует какой-то интерфейс, потом когда-то собираетесь объект удалить. Но если вы обратились к нему через интерфейс, то как только ссылка на интерфейс выйдет из сферы видимости, компилятор сразу сам удалит этот объект. Вот статья на эту тему. https://www.codeproject.com/Articles/1252175/Fixing-Delphis-Interface-Limitations У меня один объкет создает другой, а этому другому нужно вызвать методы первого. Получается круговая ссылка (circular reference), Почитал, как такие ситуации разрешают, ИИ от гугла написал несколько вариантов. Один из них, первый объект реализует некий интерфейс, а второй обращается к этому интерфейсу, а не к самому первому объекту. Но особенности интерфейсов в Delphi делают этот метод геморным, неподходящим в общем. Сейчас у меня это решено так, что объявлен процедурный тип (процедура объекта) и в конструктор второго объекта передаются три параметра этого типа (т.е. три метода первого объекта). Т.е. второй объект не должен что-либо знать о первом классе, ему достаточно знать тип параметра. Можно наверное и как-то иначе разрешить эту ситуацию, но не придумал, как это сделать. А если бы интерфейсы были бы без reference counting, сделал бы интерфейс с этими тремя методами, он как раз и в других ситуациях пригодился бы. Мне надо из других модулей (и потоков) запускать в модуле определенного типа (и потоке) два типа действий и останавливать их оба одной и той же процедурой "стоп". Причем запускать могут разные модули. Интерфейс по-моему был бы к месту здесь. ... |
|||
:
Изменено: 29.05.2025, 13:22 - s62
Нравится:
Не нравится:
|
|||
29.05.2025, 13:19 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Один из недостатков языка Delphi (Object Pascal) - что интерфейсы (интерфейсные типы) изначально были привязаны к технологии COM и по-умолчанию в них релизован подсчет ссылок и автоматическое удаление, когда ссылок становится ноль. Это усложняет использование интерфейсов как просто контрактов, как они например широко используются в Java. Например вы создаете обычным образом объект, который реализует какой-то интерфейс, потом когда-то собираетесь объект удалить. Но если вы обратились к нему через интерфейс, то как только ссылка на интерфейс выйдет из сферы видимости, компилятор сразу сам удалит этот объект. Вот статья на эту тему. https://www.codeproject.com/Articles/1252175/Fixing-Delphis-Interface-Limitations У меня один объкет создает другой, а этому другому нужно вызвать методы первого. Получается круговая ссылка (circular reference), Почитал, как такие ситуации разрешают, ИИ от гугла написал несколько вариантов. Один из них, первый объект реализует некий интерфейс, а второй обращается к этому интерфейсу, а не к самому первому объекту. Но особенности интерфейсов в Delphi делают этот метод геморным, неподходящим в общем. Сейчас у меня это решено так, что объявлен процедурный тип (процедура объекта) и в конструктор второго объекта передаются три параметра этого типа (т.е. три метода первого объекта). Т.е. второй объект не должен что-либо знать о первом классе, ему достаточно знать тип параметра. Можно наверное и как-то иначе разрешить эту ситуацию, но не придумал, как это сделать. А если бы интерфейсы были бы без reference counting, сделал бы интерфейс с этими тремя методами, он как раз и в других ситуациях пригодился бы. Мне надо из других модулей (и потоков) запускать в модуле определенного типа (и потоке) два типа действий и останавливать их оба одной и той же процедурой "стоп". Причем запускать могут разные модули. Интерфейс по-моему был бы к месту здесь. Наоборот, пиздатейшая вещь. А для контрактов можно использовать обычные объекты, без интерфейсов ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2025, 13:49 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
А для контрактов можно использовать обычные объекты, без интерфейсов ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2025, 16:58 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Оказывается можно вот так: Код: Delphi 1. 2. 3. 4. 5. 6. 7.
Цитата [игнорируется] counter is a local variable (declared in the block containing the for statement) of ordinal type, without any qualifiers. ... |
|||
:
Изменено: 30.05.2025, 22:00 - s62
Нравится:
Не нравится:
|
|||
30.05.2025, 21:59 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Оказывается можно вот так: Код: Delphi 1. 2. 3. 4. 5. 6. 7.
Цитата [игнорируется] counter is a local variable (declared in the block containing the for statement) of ordinal type, without any qualifiers. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2025, 22:00 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Гарыныч [игнорируется] Это 11, но вот это уже давно было. Не помню, раньше пользовался таким или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2025, 22:01 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Оказывается можно вот так: Код: Delphi 1. 2. 3. 4. 5. 6. 7.
Цитата [игнорируется] counter is a local variable (declared in the block containing the for statement) of ordinal type, without any qualifiers. а эти перечисления - всего лишь биты в этой переменной. В современных дельфях можно указывать вот так Код: Delphi 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2025, 23:36 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
В современных дельфях можно указывать вот так Код: Delphi 1. 2.
... |
|||
:
Изменено: 30.05.2025, 23:47 - s62
Нравится:
Не нравится:
|
|||
30.05.2025, 23:44 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
испокон веков в Паскале так было можно ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2025, 00:43 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
а эти перечисления - всего лишь биты в этой переменной. https://docwiki.embarcadero.com/RADStudio/Athens//en/Internal_Data_Formats_(Delphi)#Enumerated_Types ... |
|||
:
Изменено: 31.05.2025, 00:47 - s62
Нравится:
Не нравится:
|
|||
31.05.2025, 00:47 |
|
|
start [/forum/topic.php?fid=16&gotolast=1&tid=15954]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
90ms |
get tp. blocked users: |
2ms |
others: | 44ms |
total: | 240ms |
0 / 0 |