Skocz do zawartości

[C#]Problem z porównaniem liczb po wczytaniu liczb z pliku .ini


Rekomendowane odpowiedzi

Witajcie, to znowu ja.

Mam problem z porównaniem liczb po wczytaniu ich z pliku .ini.

 

Tak wygląda nie cały kod:

IniFile ini = new IniFile(@"data\update.dat");

IniFile ini2 = new IniFile(@"data\Settings.ini");

wersja = ini.Read("Update","V");

MyW = ini2.Read("Dane","V");

 

if (Convert.ToInt32(wersja) > Convert.ToInt32(MyW))

{

label1.Text = "Nowa wersja jest dostępna!";

}

 

I kiedy odpalam kod wyskakuje:

Nieprawidłowy format ciągu wejściowego.

 

Kombinuje już od 1 h i nadal to samo :/.

 

Czy trzeba wykorzystać zapytania php? czy da się to uniknąć?

Odnośnik do komentarza
Udostępnij na innych stronach

Tak wygląda klasa IniFile:

 

using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;

// Change the namespace to match your program's normal namespace
namespace MyProg
{
    class IniFile
    {
        public string Path;
        static string EXE = Assembly.GetExecutingAssembly().GetName().Name;

        [DllImport("kernel32")]
        static extern long WritePrivateProfileString(string Section, string Key, string Value, string FilePath);

        [DllImport("kernel32")]
        static extern int GetPrivateProfileString(string Section, string Key, string Default, StringBuilder RetVal, int Size, string FilePath);

        public IniFile(string IniPath = null)
        {
            Path = new FileInfo(IniPath != null ? IniPath : EXE + ".ini").FullName.ToString();
        }

        public string Read(string Section, string Key = null)
        {

            StringBuilder RetVal = new StringBuilder(255);
            GetPrivateProfileString(Section != null ? Section : EXE, Key, "", RetVal, 255, Path);
            return RetVal.ToString();
        }

        public void Write(string Section, string Key, string Value = null)
        {
            WritePrivateProfileString(Section != null ? Section : EXE, Key, Value, Path);
        }

        public void DeleteKey(string Key, string Section = null)
        {
            Write(Key, null, Section != null ? Section : EXE);
        }

        public void DeleteSection(string Section = null)
        {
            Write(null, null, Section != null ? Section : EXE);
        }

        public bool KeyExists(string Key, string Section = null)
        {
            return Read(Key, Section).Length > 0 ? true : false;
        }
    }
}

 

Raczej nie ma w nim błędu. Zmieniłem w Read i Write kolejność argumentów.

Odnośnik do komentarza
Udostępnij na innych stronach

@Utermiko: Nic nie ma po ini.Read(... oprócz porównania liczb.

 

@Gnysek: Dzięki, na pewno mi się przyda.

 

@Edit: Już wiem gdzie był błąd.

1.W pliku ini było 1.0 a powinno być 1,0.

2.Deklarowałem liczbe int zamiast double.

 

Dzięki wszystkim za pomoc.

Temat do zamknięcia.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...