|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
У меня сейчас на работе основной ЯП - Delphi. Хотя относительно давно на нем программирую, все равно какие-то новые штуки узнавал в последнее время. Буду тут писать. Первое. Есть в Delphi, как и в других языках, функция Format. Но есть и частные функции для форматирования вывода разных данных. Например для вывода чисел с плавающей запятой - FormatFloat. Я думал, что эта функция, когда задаешь кол-во знаков после запятой, просто обрезает остальные десятичные знаки. Сегодня узнал, что она всё-таки округляет до заданного кол-ва знаков. И это хорошо,что округляет. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2024, 21:53 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
На днях узнал о синтаксической конструкции в Паскале Делфи, о которой раньше не знал. Смотрел чужой код и натолкнулся на конструкцию Код: Delphi 1.
Код: Delphi 1.
Пример: Код: Delphi 1. 2. 3. 4. 5. 6.
Код: Delphi 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Но ещё, в коде, где я это увидел, имя переменной не совпадает ни с одним зарезервированным словом. Я предполагаю, что это появилось там в результате ряда ошибок и обстоятельств. Предполагаю. что человек скопировал код из Си. Это функция WinApi, видел пример её использования на Си, там как раз первый параметр передается по ссылке, передается вдрес, и в Си стоит амперсанд. Вероятно человек скопировал этот код и амперсанд тоже. Но в Delphi с одной сторроны адрес пишется @, а с другой - в этой импортированной функции первый параметр объявлен как var-параметр, т.е. он и так уже передается по ссылке, адрес писать не нужно. И в третьих, & в Delphi означает, что имя при парсинге не надо понимать, как зарезервированное слово. Т.е. скопированный так код изменил свой смысл, но так получилось, что результат скомпилировался и он даже правильный. Правда можно просто убрать этот амперсанд, он в данном случае не имеет смысла. ... |
|||
:
Изменено: 24.01.2024, 23:32 - s62
Нравится:
Не нравится:
|
|||
24.01.2024, 23:24 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Так себе конечно фича... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2024, 00:33 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Так себе конечно фича... ... |
|||
:
Изменено: 25.01.2024, 00:37 - s62
Нравится:
Не нравится:
|
|||
25.01.2024, 00:35 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
В Delphi есть поддержка тем (оформления) Windows. И эта штука, что впрочем логично, не позволяет менять какие-то визуальные свойства тех или иных элементов управления. Например в элементе управления TPageControl: панель с закладками, цвет закладок в теме по-умолчанию в Windows 10 - белый. На белом не всегда хорошо видны поля ввода и т.д. Но цвет, просто задав в design-time какой-то произвольный, не поменяешь, если включена поддержка тем, нарисовано будет всё равно в стиле темы. Сегодня добавлял в полосу статуса окна (Status bar, полоска внизу), вывод еще одной информации, кроме которой там была. Там несколько панелей, на части выводится текст, на других рисуется типа индикаторов красный/зеленый. Панели есть двух типов - либо задаешь текст и он выводится на панели, либо она отрисовывается программно (свойство Style - psText или psOwnerDraw). И вот надо было добавить ещё одну панельку, в которой выводится текст красным цветом в некоторых ситуациях. Отлаживаю и обращаю внимание, что текстовые панели - жирным шрифтом. Почему? Начинаю искать - в свойствах этого нет, в коде этого тоже нет, из других потоков, которые через Synchronize вызывают разные процедуры в этом окне, тоже нет такого. Причем сначала после открытия окна - без жирного, без bold'а, а потом появляется он. И только через какое-то время догадался, что это - тема. Отключил в опциях проекта поддержку тем и жирный перестал появляться. Ну, потом включил назад. Ладно, раз такая тема, в смысле тема оформления :), то значит так, пусть уж будет, чтобы не выбиваться из стиля Windows. ... |
|||
:
Изменено: 05.02.2024, 18:35 - s62
Нравится:
Не нравится:
|
|||
05.02.2024, 18:30 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Знакомую фамилию увидел. Использовал в коде функцию CompareMem (сравнивает две области памяти), решил глянуть, как она реализована. Ну, как и ряд других функций, взята из проекта Fastcode, вероятно - адаптирована. А среди тех, кто принимал участие в написании, упомянут Александр Шарахов (только он там и упомянут). Александр не раз писал в разделе Delphi на sql.ru.
Цитата [игнорируется] (* ***** BEGIN LICENSE BLOCK ***** * * The function CompareMem is licensed under the CodeGear license terms. * * The initial developer of the original code is Fastcode * * Portions created by the initial developer are Copyright (C) 2002-2004 * the initial developer. All Rights Reserved. * * Contributor(s): Aleksandr Sharahov * * ***** END LICENSE BLOCK ***** *) ... |
|||
:
Изменено: 09.02.2024, 10:19 - s62
Нравится:
Не нравится:
|
|||
09.02.2024, 10:19 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
В индексе TIOBE в феврале на 12 месте: https://www.tiobe.com/tiobe-index/ ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2024, 08:49 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Висуал бейсик на 9м. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2024, 08:57 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Висуал бейсик на 9м. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2024, 12:02 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Висуал бейсик на 9м. под этим названием там другой язык ... |
|||
:
Изменено: 20.02.2024, 20:45 - Ифрит
Нравится:
Не нравится:
|
|||
20.02.2024, 20:45 |
|
Заметки о Делфи.
|
|||
---|---|---|---|
#18+
Висуал бейсик на 9м. https://www.tiobe.com/tiobe-index/visual-basic/ Есть рейтинги на stack overflow: https://survey.stackoverflow.co/2023/#section-most-popular-technologies-programming-scripting-and-markup-languages ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2024, 20:59 |
|
Заметки о Делфи.
|
|
---|---|
#18+
Может все это знают и так, но вдруг кто-то не знает или забыл. Компилятор под Windows использует менеджер памяти, взятый из опенсорсного проекта FastMM. И у него есть такая фишка, он может при закрытии программы показать неосвобожденную память. ОС конечно всю виртуальную память процесса после его закрытия всё равно заберет, но тут можно видеть, какие объекты были созданы и не удалились. Делается это так: в файле проекта в начале после begin добавляется строчка: Код: Delphi 1. 2. 3. 4.
Код: Delphi 1. 2. 3. 4.
https://docwiki.embarcadero.com/RADStudio/Athens/en/Configuring_the_Memory_Manager ... |
|
:
|
|
29.02.2024, 14:25 |
|
Заметки о Делфи.
|
|
---|---|
#18+
Долгое время для измерения времени по-быстрому (хаха, прошу прощения за получившуюся игру слов) использовал функцию win32 API GetTickCount. Эта функция возвращает время в мсек от начала работы компьютера. Результат имеет тип Cardinal (беззнаковое 4 байтовое целое), так что он зацикливается после 49,7 примерно дней работы Windows. (Есть функция GetTickCount64, которая возвращает Int64). MS пишет: Цитата [игнорируется] Разрешение функции GetTickCount ограничено разрешением системного таймера, которое обычно находится в диапазоне от 10 до 16 миллисекундах. Код: Delphi 1. 2. 3. 4. 5. 6. 7. 8. 9.
Понятно, что тут не учитывается фактор многопоточности, что какое-то время поток, в котором выполняется код, мог спать в то время, когда (если) система выделила кусок (slice) времени другому или другим потокам. Но в последнее время часто, когда надо померить время, стал использовать точный таймер, для которого есть обертка в Delphi. Обертка в виде записи с методами. У этого таймера период обычно - 0.1 мксек, т.е. частота 10 000 000 гц. Код: Delphi 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Код: Delphi 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|
:
|
|
19.03.2024, 12:04 |
|
|
Start [/forum/topic.php?fid=16&tid=15954&gotolast=1]: |
0ms |
get settings: |
1ms |
get forum list: |
7ms |
check forum access: |
0ms |
check topic access: |
0ms |
track hit: |
32ms |
get topic data: |
4ms |
get forum data: |
7ms |
get page messages: |
33ms |
update_topic_read_status (15954): 19.03.2024 12:04:27: |
0ms |
get tp. blocked users: |
1ms |
get online users: |
68ms |
check new: |
342ms |
others: | 163ms |
total: | 658ms |
0 / 0 |