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

iskander
17.12.2025 09:32:33
Форум: Компилятор / язык программирования
Тема: Ускоренная версия функции определения високосного года
Ответы: 5
Просмотры: 763

Re: Ускоренная версия функции определения високосного года


Её вначале удалось немного ускорить вручную, а затем этот замысел развил ИИ и вот что получилось.

Для органайзера я использую сейчас её 64 битную версию, но на всякий случай сделал и проверил 16 битную. Она работает ещё немного быстрее и совместима по параметру с функцией FPC SysUtils.IsLeapYear ...
iskander
01.08.2025 13:39:18
Форум: Lazarus
Тема: Просто TClientSocket
Ответы: 31
Просмотры: 7068

Re: Просто TClientSocket

Вообщем был тут когда-то спор другому поводу но в результате было выяснено, что разница между использованием динамических массивов и TStringList в любой более менее реальной программе иногда поучается более чем на порядок .
Когда сравнивают попу с пальцем, получаются странные вещи.
Впрочем, это ...
iskander
01.08.2025 11:57:38
Форум: Lazarus
Тема: Просто TClientSocket
Ответы: 31
Просмотры: 7068

Re: Просто TClientSocket

Просто почти никто не будет увеличивать размер строки по одному символу до мегабайтных размеров
Имхо в девяти случаях из десяти именно это и происходит.

а в случае бинарного динамического массива это чисто логически кажется вполне «штатным случаем».
Что-то вдруг вспомнилось

- Василий Иванович ...
iskander
31.07.2025 13:01:42
Форум: Lazarus
Тема: Просто TClientSocket
Ответы: 31
Просмотры: 7068

Re: Просто TClientSocket

Имхо ближе всего к озвученной функциональности сокеты lNet.
Alex2013 писал(а):
mike писал(а):И зачем хранить двоичные данные в строках, когда есть динамические массивы?
Медленные они
"Медленный массив" немного напоминает синий вкус или горький цвет.
iskander
21.06.2025 13:16:25
Форум: Lazarus
Тема: Как правильно готовить TDictionary<string, T>
Ответы: 5
Просмотры: 3511

Re: Как правильно готовить TDictionary<string, T>

как человеку начавшему писать на Лазарусе недавно
А я, в свою очередь, практически ни в зуб ногой в шарпе.
Так что получается что-то вроде беседы слепого с глухонемым.
И все же Lazarus это не язык, а всего лишь продвинутый редактор.


...все таки после чего-то подобного

public void ...
iskander
17.06.2025 07:37:45
Форум: Lazarus
Тема: Как правильно готовить TDictionary<string, T>
Ответы: 5
Просмотры: 3511

Re: Как правильно готовить TDictionary<string, T>

GreyCrazyWolf писал(а):и хотелось чтоб было как-то так
Ну и хорошо, а что этому мешает?
iskander
16.06.2025 23:53:40
Форум: Lazarus
Тема: Как правильно готовить TDictionary<string, T>
Ответы: 5
Просмотры: 3511

Re: Как правильно готовить TDictionary<string, T>


1. В куче мест написано что
FAdapterTypes := AdapterTypesDict.Create();
нужно вызывать с опцией [doOwnsValues], но у меня такого конструктора нет
Заменить TDictionary на TObjectDictionary.

2. Есть ли более простой способ реализации аналога C#
...
Graecum est; non potest legi :)
Генерик с ...
iskander
10.06.2025 08:53:09
Форум: Lazarus
Тема: Lazarus в Windows - неполадки в сравнении строк
Ответы: 16
Просмотры: 632818

Re: Lazarus в Windows - неполадки в сравнении строк

Но я совершенно не вижу утечек памяти, как их обнаружить?
Как по мне, самый простой способ:
добавить в модуле программы сразу после begin

...
begin
{$if declared(UseHeapTrace)}
SetHeapTraceOutput('heap.log');
{$endif}
...
end.

в свойствах проекта поставить галку "Использовать модуль Heaptrc".
iskander
09.06.2025 15:33:20
Форум: Lazarus
Тема: Lazarus в Windows - неполадки в сравнении строк
Ответы: 16
Просмотры: 632818

Re: Lazarus в Windows - неполадки в сравнении строк

Ну для соревнований на скорость эта версия была явно не пригодной. Это была экспериментальная версия с сортировкой "пузырьком".
Меня больше удивили компараторы, бессмысленные, но совершенно беспощадные.
Для сортировки UTF-8 строк в лексикографическом порядке(кодовых точек) вполне достаточно ...
iskander
07.06.2025 09:08:27
Форум: Lazarus
Тема: Lazarus в Windows - неполадки в сравнении строк
Ответы: 16
Просмотры: 632818

Re: Lazarus в Windows - неполадки в сравнении строк

То был https://chat.deepseek.com/
А какая разница(c)
Но ведь работает при этом.
На утечки памяти проверялось?

Напоминает FizzBuzz Enterprise Edition.
То что нагородил ди-псих можно заменить двумя строчками(в транковом FPC одной), при этом будет работать значительно быстрее.

Добавлено спустя ...
iskander
06.06.2025 08:55:50
Форум: Lazarus
Тема: Lazarus в Windows - неполадки в сравнении строк
Ответы: 16
Просмотры: 632818

Re: Lazarus в Windows - неполадки в сравнении строк

iskander писал(а):... щит-гопота ...
Alexander писал(а):Что за живность?
ChatGPT и иже с нею.
Alexander писал(а):За борт.
Поддерживаю.
iskander
05.06.2025 20:27:11
Форум: Lazarus
Тема: Lazarus в Windows - неполадки в сравнении строк
Ответы: 16
Просмотры: 632818

Re: Lazarus в Windows - неполадки в сравнении строк

Alexander писал(а):В моём новом органайзере есть экспериментальный сортировщик во многом написанный ИИ
Имхо щит-гопота решила постебаться.
iskander
04.06.2025 15:16:10
Форум: Lazarus
Тема: Lazarus в Windows - неполадки в сравнении строк
Ответы: 16
Просмотры: 632818

Re: Lazarus в Windows - неполадки в сравнении строк

На старом Lazarus 2.0.12 все работает четко, а на версиях 3.2.х код выдает
Так текущая релизная версия Лазаря как бы 4.0 .


procedure TForm1.Button1Click(Sender: TObject);
const
SRC1 = 'РАБОТА';
var
s: string;
begin
s := UTF8Copy(SRC1, 3, 1);
if s = 'Б' then
ShowMessage ('Равно')
else ...
iskander
28.04.2025 19:34:27
Форум: Free Pascal Compiler
Тема: Баг или фича
Ответы: 11
Просмотры: 13423

Re: Баг или фича

Power() - это не совсем вычисление степени в математическом смысле, в ней куча проверок граничных условий. В частности, при показателе степени 0 (а также -0) она ничего не вычисляет и возвращает единицу независимо от основания степени.
Это был всего лишь маленький контрпример насчет операций с NaN ...
iskander
27.04.2025 09:46:19
Форум: Free Pascal Compiler
Тема: Баг или фича
Ответы: 11
Просмотры: 13423

Re: Баг или фича

Операции с NaN вызывают исключение,
В 64-битной винде:

{$mode objfpc}
uses
SysUtils, Math;
var
d: Double;
begin
SetExceptionMask(GetExceptionMask - [exInvalidOp]);
d := Power(Double.NaN, 0);
WriteLn(d);
d := Abs(Double.NaN) + 42;
WriteLn(d);
ReadLn;
end.

печатает

1 ...