Значение в игре может быть закодированным. А может ты и не по тому адрессу его пишешь.
...
(посмотрел по внимательнее)
Цитата:
GetMem(buf, 1);
buf^:=Chr(PokeValue);
WriteProcessMemory(HandleWindow, ptr(Address1), buf, NumberOfBytes, write);
|
1. у тебя функция Chr(PokeValue) возвращает 255, которая пишется в buf размером в один байт (см. GetMem(buf,1)

.
2. потом по нужному тебе адресу пишется 4 байта с адреса переменной buf, где точно известно что первый байт =255 а остальные три неизвестно что хранят в себе! Собственно тут и есть твоя ошибка.