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
  1. No comments yet.
  1. No trackbacks yet.

Leave a comment