Escrever no Address em Float e não em 4b

Delphi

27/07/2018

Boa noite pessoal, estava estudando a linguagem fazendo um modificador pra um jogo de corrida (sim kkk) e me deparei com um problema..

Todos os address que acessei/escrevi eram em 4bytes, agora tenho que mandar um valor em Float e não em 4bytes.

Bom é isso, não consigo sair desse problema pois sou bem iniciante na linguagem/programação.

Obrigado desde já, vou colocar o código abaixo:

 GetProcessID('NFS13.exe', PID);
  HandleX   := OpenProcess(PROCESS_ALL_ACCESS, False, PID);

  ReadProcessMemory(HandleX, Pointer(GetModuleHandleX(PID,'TS3.exe') + $00B09F58 ),@Endereco,4,Buffer);
  ReadProcessMemory(HandleX, Pointer(Endereco + $35C),@Endereco,4,Buffer);
  ReadProcessMemory(HandleX, Pointer(Endereco + $364),@Endereco,4,Buffer);
  ReadProcessMemory(HandleX, Pointer(Endereco + $220),@Endereco,4,Buffer);
  ReadProcessMemory(HandleX, Pointer(Endereco + $E8),@Endereco,4,Buffer);
  Valor := 100; // Teria que ser 100 o valor mas isso em Float
  WriteProcessMemory(HandleX, Pointer(Endereco + $60),@Valor,4,Buffer);
Alisson

Alisson

Curtidas 0

Respostas

Felipe Morais

Felipe Morais

27/07/2018

Alisson,

Eu não sei se compreendi bem o que pretende fazer, mas tentar alocar dado em endereçamento que não são compatíveis não soa muito bem. Por exemplo, um byte tem um range de 0 a 255 e tamanho de armazenamento 1 por cada byte, enquanto que o tipo Float/Double possui 15 dígitos significantes com expoentes que variam de -308 a +308 e seria preciso um tamanho de armazenamento de tamanho 8 para cada.

Em outras palavras, você está tentando estacionar um caminhão-cegonha (tamanho 8) numa vaga de carro popular(tamanho 1): não irá caber e provavelmente um acidente pode acontecer.

Presumo que seu projeto precisaria que os tipos de endereçamento (address) de memória precisam estar em conformidade com os dados que gostaria de escrever neles: o tipo adequado para ser alocado para seu tamanho correto.

Espero ter ajudado!
GOSTEI 0
POSTAR