Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

ini section exists


Rekomendowane odpowiedzi

Opublikowano

Wiatm.
Mam write i read w ini files

ale chciałbym jeszcze jakoś

zrobić żeby sprawdzało czy

dana sekcja jest w tym pliku.

Mógłby ktoś mi z tym pomóc?

 

Przykład(W pliku ini):

[sekcja]
key=val

 

Chcę żeby sprawdziło, czy dana

sekcja istnieje w pliku, w tym

wypadku sekcja: "Sekcja".

 

IniFile(Class):

 

 

public class IniFile
    {
        public string path;

        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section,
            string key, string val, string filePath);
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,
                 string key, string def, StringBuilder retVal,
            int size, string filePath);

        public IniFile(string INIPath)
        {
            path = INIPath;
        }

        public void IniWriteValue(string Section, string Key, string Value)
        {
            WritePrivateProfileString(Section, Key, Value, this.path);
        }

        public string IniReadValue(string Section, string Key)
        {
            StringBuilder temp = new StringBuilder(255);
            int i = GetPrivateProfileString(Section, Key, "", temp,
                                            255, this.path);
            return temp.ToString();
        }
    }

 

 

Opublikowano

Może droga na około ale mógłbyś odczytać całą zawartość pliku i za pomocą metody IndexOf sprawdzić czy sekcja istnieje.

4417049059_6234f40fb5.jpg
Storm has passed but the destruction are still visible.

Opublikowano

"If lpAppName is NULL, GetPrivateProfileString copies all section names in the specified file to the supplied buffer."

Opublikowano

Dobra jakoś zrobiłem

ale teraz pytanie jak przesłać

do serwera nazwę i hasło ..

hmm da się coś takiego

jak w php (name=nazwa&pass=haslo)
chodzi o to by za jednym razem wysłać

i mieć to osobno w serwerze:

string name;

string pass;

 

Ok zrobiłem przy użyciu split

Opublikowano

Z nudów napisałem coś takiego
 

public class PlikINI
    {
        private Dictionary<string, Dictionary<string, string>> Spis;
        private string Sciezka;
        public PlikINI(string sciezka)
        {
            this.Sciezka = sciezka;
            Spis = new Dictionary<string, Dictionary<string, string>>();
            if (!File.Exists(sciezka))
            {
                File.Create(sciezka);
                return;
            }
            string aktualnaSekcja = null, klucz = null, str = null, linia = null;
            var regSekcja = new System.Text.RegularExpressions.Regex(@"\[(.*?)\]");
            using (var sr = new StreamReader(sciezka))
            {
                while ((linia = sr.ReadLine()) != null)
                {
                    if (linia.StartsWith(";")) //komentarz lub cd str
                    {
                        if (str == null)
                            continue;
                        else
                        {
                            str += "\n";
                            if (linia.EndsWith(@"\"))
                                str += linia.Substring(0, linia.LastIndexOf(@"\"));
                            else
                            {
                                this.Spis[aktualnaSekcja].Add(klucz, str + linia);
                                str = klucz = null;
                            }
                        }
                    }
                    else if (linia.StartsWith("[")) //sekcja
                    {
                        var match = regSekcja.Match(linia);
                        if (match.Success)
                        {
                            if (Spis.ContainsKey(match.Groups[1].Value))
                                throw new Exception("Sekcja została zdefiniowana wcześniej.");
                            aktualnaSekcja = match.Groups[1].Value;
                            this.Spis.Add(aktualnaSekcja, new Dictionary<string, string>());
                        }
                    }
                    else if (linia.Contains("=") && str == null)
                    {
                        if (aktualnaSekcja == null)
                            throw new Exception("Brak sekcji.");
                        var kvp = linia.Split('=');
                        if (kvp.Length < 2)
                            throw new Exception("Niewłaściwa definicja.");
                        if (kvp[1].EndsWith(@"\"))
                        {
                            klucz = kvp[0];
                            str = kvp[1].Substring(0, kvp[1].LastIndexOf(@"\"));
                        }
                        else
                            this.Spis[aktualnaSekcja].Add(kvp[0], kvp[1]);
                    }
                    else if (str != null)
                    {
                        str += "\n";
                        if (linia.EndsWith(@"\"))
                            str += linia.Substring(0, linia.LastIndexOf(@"\"));
                        else
                        {
                            this.Spis[aktualnaSekcja].Add(klucz, str + linia);
                            str = klucz = null;
                        }
                    }
                }
            }
        }
        public void UstawWartosc(string sekcja, string klucz, string wartosc)
        {
            if (!this.IstniejeSekcja(sekcja))
                this.Spis.Add(sekcja, new Dictionary<string, string>());
            this.Spis[sekcja][klucz] = wartosc;
        }
        public string ZnajdzWartosc(string sekcja, string klucz)
        {
            if (!this.Spis.ContainsKey(sekcja) || !this.Spis[sekcja].ContainsKey(klucz))
                return null;
            return this.Spis[sekcja][klucz];
        }
        public bool IstniejeSekcja(string sekcja)
        {
            return this.Spis.ContainsKey(sekcja);
        }
        public bool IstniejeWartosc(string sekcja, string klucz)
        {
            if (sekcja == null)
            {
                foreach (var kvp in this.Spis)
                {
                    foreach (var kv in kvp.Value)
                        if (kv.Value.ToLower().Equals(klucz.ToLower()))
                            return true;
                }
            }
            else
                return this.IstniejeSekcja(sekcja) && this.Spis[sekcja].ContainsKey(klucz);
            return false;
        }
        public bool IstniejeWartosc(string klucz)
        {
            return this.IstniejeWartosc(null, klucz);
        }
        public void ZapiszPlik(string sciezka = null)
        {
            if (sciezka == null)
                sciezka = this.Sciezka;
            File.WriteAllText(sciezka, this.ToString());
        }
        public override string ToString()
        {
            var sb = new StringBuilder();
            foreach (var kvp in this.Spis)
            {
                sb.AppendLine(string.Format("[{0}]", kvp.Key));
                foreach (var kv in kvp.Value)
                {
                    sb.AppendLine(string.Format("{0}={1}", kv.Key, kv.Value.Replace("\n", "\\\n")));
                }
            }
            return sb.ToString();
        }
    }

Parsuje plik .ini według założeń stąd

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...