Взламываем игру прямо в памяти, через ReadProcessMemory. Отыскали интересную структуру, в ней нашлись какие-то адреса… Как эту структуру оформить на Паскале?
Плохой способ:
type
TStructure = packed record
// 0000
mem0000 : array [$0000..$001F] of byte;
// 0020
Lives : longword;
// 0024
mem0024 : array [$0024..$003F] of byte;
// 0040
Ammo : longword;
// 0044
end;
А теперь представим себе: вдруг мы опознали, что находится по адресу 0030. Слишком много работы, а при любой ошибке сдвигаются все адреса после.
Моё решение:
type
TStructure = packed record
case integer of
$0020 : ( _pad0020 : array [$0000..$001F] of byte; Lives : longword );
$0040 : ( _pad0040 : array [$0000..$003F] of byte; Ammo : longword );
end;