Конечно ругается. Часть кода полностью лишена смысла.
Код:
GetMem(buf,1);
buf^ := Chr(PokeValue1); вот ету строку!!!
WriteProcessMemory(HandleWindow,ptr(Address2),buf,NumberOfBytes,write);
FreeMem(buf);
Что это значит? Это значит, мы динамически выделяем память, размером в 1 байт, записываем туда первый байт нашего значения как символ и пишем. Намного результативнее будет вместо этих 4 строчек:
Код:
WriteProcessMemory(HandleWindow,ptr(Address2),@pokevalue1,sizeof(pokevalue1),write);
И ему будет совершенно не важен тип.