MapBasic ile INI Dosyası Okuma/Yazma
Program ön değerlerini veya kullanıcı ayarlarını kaydetmek için INI dosyalarını kullanmamız gerekebilir. Aşağıdaki MapBasic programı bu dosyaların nasıl okunacağını ve bu dosyalara nasıl yazılacağını gösteriyor. Programda Parameters.ini dosyası kullanılıyor. Programı çalıştırmadan önce *.MB dosyası ile aynı yerde Parameters.ini adlı bir dosya oluşturun ve bu dosyanın içine şu satırları yapıştırın:
[SECTION1]
KEY1=VALUE1
Dosyayı kaydederek kapatın. Aşağıdaki program önce KEY1 değerini okuyacak ve daha sonra buna yeni bir değer yazacaktır:
define iniFileName "Parameters.ini" Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpSectionName As String, ByVal lpKeyName As String, ByVal lpDefault As String, lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpSectionName As String, ByVal lpKeyName As string, ByVal lpString As string, ByVal lpIniFileName As String) As Integer Declare Sub Main() Declare Function getIniFileValue(byval sectionName as string, byval keyName as string) as string Declare Sub setIniFileValue(ByVal sectionName as string, ByVal keyName as string, ByVal keyValue as string) Sub Main() 'SECTION1 deki KEY1 anahtarının değerini oku Note "SECTION1 deki KEY1 anahtarının değeri: " & getIniFileValue("SECTION1", "KEY1") 'SECTION1 deki KEY1 anahtarının değerine yaz (değiştir) Call setIniFileValue("SECTION1", "KEY1", "VALUE1 değişti.") Note iniFileName & " dosyasında SECTION1 kısmındaki KEY1 anahtarının değeri değişti." End Sub Function getIniFileValue(byval sectionName as string, byval keyName as string) as string dim iniPath as string iniPath = ApplicationDirectory$() & iniFileName if FileExists(iniPath) then dim retVal as string retVal = String$(255, " ") dim res as integer res = GetPrivateProfileString(sectionName, keyName, "", retVal, 255, iniPath) if res > 0 then getIniFileValue = retVal else note "Ini dosyasındaki değer okunamadı." getIniFileValue = "" end if else note "Ini dosyası bulunamadı." getIniFileValue = "" end if End Function Sub setIniFileValue(ByVal sectionName as string, ByVal keyName as string, ByVal keyValue as string) dim retval as integer dim iniPath as string iniPath = ApplicationDirectory$() & iniFileName retval = WritePrivateProfileString(sectionName, keyName, keyValue, iniPath) if retval = 0 then 'Hata Note "Ini dosyasına yazılamadı." end if End Sub
Comments (0)
Leave a comment