ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Глюк альтернативных модулей для Delphi
  #1  
Старый 21.04.2009, 19:50
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию Глюк альтернативных модулей для Delphi

некоторым из нас инода приходилось использовать альтернативные системные модули для Delphi (sysinit и system).
Кто незнает для чего они, то отвечаю - с помощью их можно очень сильно уменьшить размер программы написанных без VCL. Порядком в 2 раза уменьшается минимальное приложение.
Код:
program test;
{$APPTYPE CONSOLE}
begin
 writeln('hello');
end.
Весит 7 кил. Со стандартными модулями - 15 кил.
Так что использовать их выгодно.
В инете очень часто встречаются эти модули.
Но случайно был замечен в них один глюк.

Глюк связан с генератором случайных чисел.
к функции random притензий нет. А вот randomize была жестоко убита.
Т.е. randomize задает начальное состояние ГСЧ.
Фактически эта функция заносит значение системного времяни в переменную RandSeed
Но в альтернативных модулях походу дела это значение статическое.
т.е.
Код:
for y:=1 to 10 do
 begin
   randomize;
   for x:=1 to 10 do write(random(10));
   writeln;
 end;
Даст 10 одинаковых строк.
Чтобы избавиться от этого глюка достаточно самому задать значение RandSeed.
Чтобы сильно не увеличивать размер функцией получения времяни, для инициализации будим использовать количество тактов сделаннх процессором после ребута/включения.

Сделать это можно просто:
Код:
procedure myrandomize;assembler;
asm
 rdtsc 
 add eax,edx
 mov RandSeed,eax
end;
P.S. Из-за этого гюкнутового randomize стока хрени херовой было.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МикроДжоинер для начинающих ReanimatoR Статьи 23 02.01.2010 15:07
Коды silveran Сотовый фрикинг 4 18.10.2005 14:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ