Dari file teks saya membaca nilai, X.

XCOORD = -75.015

Saya mendapatkannya seperti ini, dan mengubahnya menjadi ganda.

    var dic = File.ReadAllLines("test.txt")
      .Select(l => l.Split(new[] { '=' }))
      .ToDictionary(s => s[0].Trim(), s => s[1].Trim());

    string X = dic["XCOORD"];
    double GivenX = Convert.ToDouble(X);

Saya kemudian menggunakan fungsi saya seperti:

WriteFloat(pointerx, (float)GivenX);

Sayangnya, fungsi tersebut tidak dapat membaca nilai dengan benar. Karena itu berhasil jika saya hanya melakukan:

WriteFloat(pointerx, -75.015f);

Saya pikir itu tidak membaca simbol - dan/atau . apakah ada ide tentang cara menyelesaikan ini? Seperti yang diminta, saya mencetak nilai X:

mRef.showInfo(Convert.ToString(GivenX));

Ini menunjukkan kepada saya: -75015, tanpa . Saya mencetak ini setelah mengubahnya menjadi dua kali lipat. Jika saya memasukkannya ke dalam file teks seperti ini: XCOORD = -75.015f. Itu membuat crash seluruh program saya.

Fungsi WriteFloat:

public void WriteFloat(long Address, float Value)
        {
            WriteProcessMemory(GetProcessHandle(), Address, BitConverter.GetBytes(Value), 4);
        }

Saat ini, saya telah mengetahuinya sebelum saya mengubahnya menjadi dobel. Ini mencetak X dengan baik: -75.015. Setelah mengubahnya menjadi ganda, itu adalah: -75015. Ia merindukan. setelah -75.

1
Zuid ZuidZijdeStrijder kb 14 Maret 2019, 22:48

1 menjawab

Jawaban Terbaik

Ini tidak benar-benar menjawab, tetapi menjawab banyak komentar. Dan, itu tidak akan muat dalam komentar

Saya membuat file teks sederhana yang terlihat seperti:

XCOORD = -75.015
POSITIVE = 25.123
WHOLE = 123

Kemudian saya mengambil kode Anda dan menyempurnakannya untuk membaca semua kunci/nilai dalam file itu dan menuliskan hasilnya:

 public static void ConvertTheFloats()
 {
     var dic = File.ReadAllLines("ConvertFloatsData.txt")
         .Select(l => l.Split(new[] { '=' }))
         .ToDictionary(s => s[0].Trim(), s => s[1].Trim());

     var keys = dic.Keys;
     foreach (var key in keys)
     {
         string x = dic[key];
         if (float.TryParse(x, out var floatX))
         {
             Debug.WriteLine($"Success: Key: {key} - String Value: {x} - Float Value: {floatX}");
         }
         else
         {
             Debug.WriteLine($"Failed: Key: {key} - String Value: {x}");
         }
     }
 }

Hasilnya terlihat seperti:

Success: Key: XCOORD - String Value: -75.015 - Float Value: -75.015
Success: Key: POSITIVE - String Value: 25.123 - Float Value: 25.123
Success: Key: WHOLE - String Value: 123 - Float Value: 123

Jadi, penguraian file Anda berfungsi. Kamus mendapatkan kunci dan string yang mewakili pelampung (saya tidak repot dengan ganda). Saya berhasil mengubahnya menjadi pelampung. Nilai-nilainya cocok.

Tampaknya masalah Anda ada pada kode yang belum Anda poskan.

1
Flydog57 14 Maret 2019, 20:19