C# .ini dosyası okuma/yazma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
CSharp
Banlı Üye
Katılım
31 Tem 2018
Mesajlar
463
Çözümler
3
Tepki puanı
149
Ödüller
3
7 HİZMET YILI
Merhaba Arkadaşlar!

C# Kodlayan birçok kişinin merak ettiği araştırsa bile sadece kısaca ve tam olarak anlatılmamış kaynaklara ulaştığı .ini yazdırma ve okuma konusunu detaylı olarak size aktaracağım!

Arkadaşlar ilk önce yapmamız gerekn işlem kernel32'in içinde bulunduğu "WritePrivateProfileString" ve "GetPrivateProfileString" methodlarını kernel32'den çekmemiz gerek
bunun için DllImport metodunu kullanacağız.

Not : Lütfen Kopyala&Yapıştır yapmayınız yaptığınız taktirde öğrenemiyeceksiniz!
C#:
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);

[DllImport("kernel32.dll")]
public static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);


Önemli Bilgi :

mh_egitim.PNG


Peki bu önemli bilgilere göre nasıl .ini dosyasındaki değerleri okuyabiliriz?

Örnek okuma methodu :
C#:
public static string Read(string SectionName, string KeyName, string INIPath) // Not : INIPath'in değeri .ini dosyasının lokasyonu olucaktır
{
    StringBuilder sb = new StringBuilder(5000); // Bir StringBuilder öğesi oluşturuyoruz ve kapasitesini 5000 Yapıyoruz
    GetPrivateProfileString(SectionName, KeyName, "", sb, sb.Capacity, INIPath); // O öğenin değeri okuyoruz
    string okunan_veri = sb.ToString(); // okunan değer oluşturduğumuz StringBuilder öğesi ile "okunan_veri"ye eşitliyoruz
    sb.Clear(); // sonra oluşturduğumuz StringBuilder öğesini sıfırlıyoruz
    return okunan_veri; // En son olarak okunan değeri döndürüyoruz
}

Not : Eğer ki bana soruyorsanız neden sb.ToString()'i döndürüp sb.Clear() yapmadın diye cevabı basit çünkü
bir değeri döndürdükten sonraki kodlar çalışmaz "Ulaşılamayan Kod" denir bu duruma

Örnek Kullanım :
C#:
string dönecekdeger = Read("Kategori", "Oge", ".ini dosyasının lokasyonu");

--------------------------------------------------------------------------------------------------------------------------------------------------

Değer yazdırma işlemi okuma işlemine göre daha kolaydır :)

C#:
public static void Write(string SectionName, string KeyName, object Value,  string INIPath)
{
   WritePrivateProfileString(SectionName, KeyName, Value.ToString(), INIPath);
}

Not : "Neden string yerine object kullandın?" diye sorucaksanız veya objecti bilmiyorsanız cevabı object kullanıcın tanımladığı değerdir, string bir değer yazarsanızda olur int bi değer yazarsanda onun değerini string olarak yazacaktır

Örnek Kullanım :
C#:
Write("Kategori, "Oge", "yazdırılmak istenen deger", ".ini dosyasının lokasyonu");


Bu yazıyı okuduğunuz için teşekkür ederim iyi kodlamalar :)
Post automatically merged:

Merhaba Arkadaşlar!

C# Kodlayan birçok kişinin merak ettiği araştırsa bile sadece kısaca ve tam olarak anlatılmamış kaynaklara ulaştığı .ini yazdırma ve okuma konusunu detaylı olarak size aktaracağım!

Arkadaşlar ilk önce yapmamız gereken işlem kernel32'in içinde bulunduğu "WritePrivateProfileString" ve "GetPrivateProfileString" methodlarını kernel32'den çekmemiz gerek
bunun için DllImport metodunu kullanacağız.

Not : Lütfen Kopyala&Yapıştır yapmayınız yaptığınız taktirde öğrenemiyeceksiniz!
C#:
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);

[DllImport("kernel32.dll")]
public static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);


Önemli Bilgi :

mh_egitim.PNG


Peki bu önemli bilgilere göre nasıl .ini dosyasındaki değerleri okuyabiliriz?

Örnek okuma methodu :
C#:
public static string Read(string SectionName, string KeyName, string INIPath) // Not : INIPath'in değeri .ini dosyasının lokasyonu olucaktır
{
    StringBuilder sb = new StringBuilder(5000); // Bir StringBuilder öğesi oluşturuyoruz ve kapasitesini 5000 Yapıyoruz
    GetPrivateProfileString(SectionName, KeyName, "", sb, sb.Capacity, INIPath); // O öğenin değeri okuyoruz
    string okunan_veri = sb.ToString(); // okunan değer oluşturduğumuz StringBuilder öğesi ile "okunan_veri"ye eşitliyoruz
    sb.Clear(); // sonra oluşturduğumuz StringBuilder öğesini sıfırlıyoruz
    return okunan_veri; // En son olarak okunan değeri döndürüyoruz
}

Not : Eğer ki bana soruyorsanız neden sb.ToString()'i döndürüp sb.Clear() yapmadın diye cevabı basit çünkü
bir değeri döndürdükten sonraki kodlar çalışmaz "Ulaşılamayan Kod" denir bu duruma

Örnek Kullanım :
C#:
string dönecekdeger = Read("Kategori", "Oge", ".ini dosyasının lokasyonu");

--------------------------------------------------------------------------------------------------------------------------------------------------

Değer yazdırma işlemi okuma işlemine göre daha kolaydır :)

C#:
public static void Write(string SectionName, string KeyName, object Value,  string INIPath)
{
   WritePrivateProfileString(SectionName, KeyName, Value.ToString(), INIPath);
}

Not : "Neden string yerine object kullandın?" diye sorucaksanız veya objecti bilmiyorsanız cevabı object kullanıcın tanımladığı değerdir, string bir değer yazarsanızda olur int bi değer yazarsanda onun değerini string olarak yazacaktır

Örnek Kullanım :
C#:
Write("Kategori", "Oge", "yazdırılmak istenen deger", ".ini dosyasının lokasyonu");


Bu yazıyı okuduğunuz için teşekkür ederim iyi kodlamalar :)
 
Son düzenleme:
⭐ Perfo ⭐
Ultra Üye
Katılım
4 Haz 2018
Mesajlar
1,544
Tepki puanı
1,384
Ödüller
10
8 HİZMET YILI
Ellerine sağlık dostum. Yeni başlayanlar için çok güzel bir başlık olmuş. Ben yapmayı düşünüyor idim, sen yapmışsın. Belki ben yapmış olsaydım, bu kadar güzel olmayabilirdi.
Tebrikler! :gelisirabii:
 
CoreCheat CSGO
Griffin Premium
Katılım
10 May 2016
Mesajlar
1,766
Çözümler
5
Tepki puanı
720
Ödüller
14
Yaş
25
Sosyal
10 HİZMET YILI
Bu kod bana bir yerden tanıdık ( ͡° ͜ʖ ͡°)

Ellerine sağlık kullanırım dicem zaten senin gelişmiş class bende var dnsmsmsmmw
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst