![]() |
Глюк альтернативных модулей для Delphi
некоторым из нас инода приходилось использовать альтернативные системные модули для Delphi (sysinit и system).
Кто незнает для чего они, то отвечаю - с помощью их можно очень сильно уменьшить размер программы написанных без VCL. Порядком в 2 раза уменьшается минимальное приложение. Код:
program test;Так что использовать их выгодно. В инете очень часто встречаются эти модули. Но случайно был замечен в них один глюк. Глюк связан с генератором случайных чисел. к функции random притензий нет. А вот randomize была жестоко убита. Т.е. randomize задает начальное состояние ГСЧ. Фактически эта функция заносит значение системного времяни в переменную RandSeed Но в альтернативных модулях походу дела это значение статическое. т.е. Код:
for y:=1 to 10 doЧтобы избавиться от этого глюка достаточно самому задать значение RandSeed. Чтобы сильно не увеличивать размер функцией получения времяни, для инициализации будим использовать количество тактов сделаннх процессором после ребута/включения. Сделать это можно просто: Код:
procedure myrandomize;assembler; |
+1, не раз замечал, но причину выяснять даже не задумывался), вообщем гуд +5
|
| Время: 03:34 |