Чтение значений с плавающей точкой в ​​VB.NET не дает ожидаемых значений - PullRequest
0 голосов
/ 06 октября 2019
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer '--- Should anyone of these be single instead?

        Dim p = Process.GetProcessesByName("insert random process name here")
        If p.Count > 0 Then

                Dim ReadBuffer As Integer = 0 '--- Should this one be single instead?
                ReadProcessMemory(p(0).Handle, &H400000, ReadBuffer, 4, 0)

                Dim Result As Single = ReadBuffer
                Msgbox(Result.ToString)

        End If

Я мог бы использовать integer в неправильных местах и, вероятно, должен использовать single, но когда я это сделаю, я все еще не получаю правильные значения. Например, я изменил тип данных ReadBuffer на Single. Ошибка также может лежать здесь: Declare Function ReadProcessMemory на одном или нескольких из Integer's.

Это примерное значение, которое я ожидаю получить: 16.6317005 и вместо этого получаю значение: -9,808334E+08 или 1,1471E-25 или что-то еще, все в зависимости от того, где я изменяю тип данных integer на single. Я никогда не получаю правильное значение и перепробовал все комбинации.

Или, может быть, это просто проблема с конверсией?

Так что я думаю, что мой главный вопрос - что не так с моим кодом? Как правильно читать значения с плавающей точкой в ​​VB.NET?

...