Veo un error de lógica:
Pones el valor de VAL en el Edit, antes de cargarlo mediante la funcion ReadProcessMemory.
Además parece que falta un begin o sobra un end...
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
Buffer: Cardinal;
Val: dword;
begin
Val := 0;
if MICSH > 0 Then
begin
HandleX := OpenProcess(PROCESS_ALL_ACCESS, False, dwPID);
ReadProcessMemory(HandleX,Pointer(MICSH+$13845F), @Val, 4, Buffer);
end;
Edit1.Text := IntToStr(Val);
end.