Найдено 579 результатов

runewalsh
05.08.2024 17:54:41
Форум: Free Pascal Compiler
Тема: Тайна shr
Ответы: 2
Просмотры: 6324

Re: Тайна shr

Сдвиг на значения ≥ разрядности переменной (32 для LongWord) не определён.
runewalsh
13.11.2023 23:11:30
Форум: Lazarus
Тема: Передача параметров через указатель на функцию
Ответы: 7
Просмотры: 3172

Re: Передача параметров через указатель на функцию

Через поля TForm1. Это указатель на самом деле не на просто функцию, а на метод — он физически хранит два указателя, на функцию и на self, запоминаемый в момент @.
runewalsh
04.11.2023 00:27:53
Форум: Обучение Free Pascal
Тема: Не могу понять, как писать исключения
Ответы: 12
Просмотры: 32576

Re: Не могу понять, как писать исключения

Нужно сделать uses SysUtils;, он занимается преобразованием ситуации, возникающей при делении на 0, в бросание исключения языка EZeroDivision.
runewalsh
04.10.2023 20:59:09
Форум: Разработки на нашем сайте
Тема: tta кодек на Паскале
Ответы: 9
Просмотры: 2093115

Re: tta кодек на Паскале

Alexander писал(а):В Паскале нет sar, sal, а только shl, shr.
Есть! А если бы и не было, можно было бы какой-нибудь не очень сильно медленный прикол придумать, типа

Код: Выделить всё

function Sar(x, by: int32): int32;
begin
	result := int32(x shr by or -(x shr (bitsizeof(x) - 1)) shl (bitsizeof(x) - 1 - by));
end;
runewalsh
19.09.2023 16:42:03
Форум: Общие вопросы
Тема: private против protected
Ответы: 7
Просмотры: 45114

Re: private против protected

И в пределах одного модуля все могут видеть всё сквозь private и protected, но в Delphi то же самое, это эквивалент «friend class» в C++. Можно выключить через strict private и strict protected, но зачем.
runewalsh
25.08.2023 08:01:59
Форум: Обучение Free Pascal
Тема: Перекрытие методов в nested классах. Как?
Ответы: 7
Просмотры: 24082

Re: Перекрытие методов в nested классах. Как?

Да, наверное, это баг, ща зарепорчу. Можно обойти как:

type
TMyWSMsgPump_descendant = class (TWSThreadMessagePump )
protected
type
Local_TMessageDriverThread = TMessageDriverThread;
TMyDrvThread_descendant = Class(Local_TMessageDriverThread )
Public
Procedure Execute;override;
End;
end;
runewalsh
01.03.2023 22:32:30
Форум: Разработки на нашем сайте
Тема: Cheb's Game Engine
Ответы: 901
Просмотры: 1230347

Re: Cheb's Game Engine

благо, Паскаль умеет в воспроизводимость, благодаря стандартизованной до бита математике с 32-битными флоатами
Не умеет, я пробовал сделать функцию LdExp(single) и она в зависимости от платформы могла считать точнее single, и причина, видимо, неизвестна ( пример в обратную сторону , где расчёты в ...
runewalsh
05.01.2023 20:55:26
Форум: Общее
Тема: Стиль кода FP
Ответы: 22
Просмотры: 86234

Re: Стиль кода FP

Это стиль кода самого Free Pascal, не более. Он далёк от общепринятого — того, в котором написаны исходники модулей Delphi.
runewalsh
08.09.2022 03:13:29
Форум: Free Pascal Compiler
Тема: О производительности динамических массивов...
Ответы: 38
Просмотры: 23790

Re: О производительности динамических массивов...

Я себе давно сделал велосипед (не через managed record или что iskander подразумевает, а через ручную работу с RTTI и заголовком массива), который как раз в порядке багофичи не зануляет элементы (если они неуправляемые). Но мне это нужно было не потому, что я очень страдал от лишних занулений, а ...
runewalsh
07.09.2022 14:21:11
Форум: Free Pascal Compiler
Тема: О производительности динамических массивов...
Ответы: 38
Просмотры: 23790

Re: О производительности динамических массивов...

beria писал(а):Результат
9875
12742320
19900
7437
12742320
19900
У меня, без изменений кода, x86-64, -O3:
9031
12742320
19900
9578
12742320
19900
:>
runewalsh
07.09.2022 11:08:26
Форум: Free Pascal Compiler
Тема: О производительности динамических массивов...
Ответы: 38
Просмотры: 23790

Re: О производительности динамических массивов...

GetMem не заполняет память нулями, SetLength заполняет (или даже вызывает кастомные Initialize/Finalize, что ещё медленнее). Если использовать GetMem+FillChar, будет одинаково.

Но если ты вызвал SetLength, то ты эти элементы собираешься использовать, то есть будешь с ними делать что-то, на фоне ...
runewalsh
03.09.2022 15:53:24
Форум: Общее
Тема: Детский вопрос про diff файл
Ответы: 2
Просмотры: 12419

Re: Детский вопрос про diff файл

Код: Выделить всё

cd <папка с репозиторием FPC>
git diff [файлы, можно с масками *?, по умолчанию диффается всё] >output.patch
runewalsh
22.08.2022 15:52:07
Форум: Разработки на нашем сайте
Тема: Cheb's Game Engine
Ответы: 901
Просмотры: 1230347

Re: Cheb's Game Engine

Cheb писал(а):Изпользуемый гапи - OpenGL / GL ES, что налагает ограничение: все команды на рендер - только в основном потоке.
В теории, shared contexts для того и задуманы, чтобы это обойти, они позволяют заниматься вещами вроде загрузки шейдеров и других ресурсов в отдельном потоке. Сам не пробовал...
runewalsh
17.08.2022 05:57:23
Форум: Free Pascal Compiler
Тема: Вопрос знатокам: удалять элементы TMap в процессе итерации
Ответы: 9
Просмотры: 7718

Re: Вопрос знатокам: удалять элементы TMap в процессе итерац

Можно сделать коллекцию, действующие итераторы которой отслеживаются в ней же и исправляются при удалениях элементов.
Это не то чтобы очень хорошая идея, но есть интересные юзкейсы; например, список коллбэков, вызываемых как for cb in list do cb.Call, где Call может добавлять или удалять другие ...
runewalsh
10.07.2022 15:06:18
Форум: Разработки на нашем сайте
Тема: Cheb's Game Engine
Ответы: 901
Просмотры: 1230347

Re: Cheb's Game Engine

data.pack (даже без сжатия... особенно без сжатия, ха-ха, но я люблю сжатие) всегда будет НАМНОГО быстрее 10 000 отдельных файлов, в этом легко убедиться, попробовав программно обработать (даже просто скопировать куда-нибудь) одно и другое. Потому что реальная файловая система кроме чтения ...