![]() |
![]() |
scorpio |
![]()
Сообщение
#1
|
Гость ![]() |
Как научиться писать games на Паскале
|
![]() ![]() |
SKVOZNJAK |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 930 Пол: Мужской Репутация: ![]() ![]() ![]() |
Типа не пробовал. Пока юзаешь cga.bgi и egavga.bgi (драйвера описанные
в описании модуля graph) всё идёт нормально - загружаются любым макаром, а вот когда пытаешься загрузить любой из вышеозначенных драйверов - вот тут-то хрень и начинается. Выдаётся сообщение, типа это хреновый драйвер. Может у тебя какая-нибудь пропатченная версия graph.tpp - всеядная? Если так - поделись улыбкою своей. ЕМС и ХМС потому и нужны, что глючит модуль winapi - скажи ещё что он не стандартный. К GetFreeSpace ,GlobalAllock претензий нет, а вот блокировка выделенной памяти функцией GlobalLock , это полный маразм. С GlobalAllocPtr та же история - система продолжает использовать заблокированную память. Записываешь большой объём информации (для надёжного эффекта - 50-100% от имеющейся свободной памяти) и получаем повисание. Как вариант - остаётся свободной <64к основной памяти. В таком объёме не пашет даже нортон. А если таким макаром выделить и "заблокировать" две области памяти, то окажется, что в реальности они используют одну и ту же область. Кстати, не надо перлом мозги компосировать , я давно с паскалем дружу, это только до интернета недавно дорвался. А по поводу скрипта, спеально для обладателей вышака :D (типа очень образованных) поясняю: Нужна процедура , можно и с самомодифицирующимся кодом - лишь бы надёжно работала, типа: PROCEDURE HRENJ1(Q4: POINTER; Q3: BYTE); ASSEMBLER; ASM; {ЗАПИСЬ СОДЕРЖИМОГО ПЕРЕМЕННОЙ Q3 ПО АДРЕСУ УКАЗАННОМУ В Q4} END; В принципе подошла бы и процедура снимающая запрет на запись в сегмент кода. Пока что надёжно работает лишь куча, но она ведь не резиновая! И ещё пожалуй следующая схема: запись в процедуру строчек A:='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; A:='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; и т д.... с последующей заменой содержимого переменной данными из генератора случайных чисел. Отредактированный модуль компилируется, а затем в созданную в нём мусорную полость можно записать инфомацию. После чего модуль можно использовать как обычный. Получается нечто навроде *.dll . |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 11:24 |