0

VBA モジュールにいくつかconstありますが、同じ定数を使用する他のアプリケーションがあるため、それらを INI ファイルに入れたいと思います。これは機能します:

Public Const PATH_DB As String = "\\server\folder\bdd.mdb"

ただし、これは機能しません。

Public Const PATH_DB As String = getFromIni("path","db","C:\config.ini")

Public Function getFromIni(ByVal strSectionName As String, ByVal strEntry As String, ByVal strIniPath As String) As String
    Dim x As Long
    Dim sSection As String, sEntry As String, sDefault As String
    Dim sRetBuf As String, iLenBuf As Integer, sFileName As String
    Dim sValue As String

    sSection = strSectionName
    sEntry = strEntry
    sDefault = ""
    sRetBuf = Strings.String$(256, 0) '256 null characters
    iLenBuf = Len(sRetBuf$)
    sFileName = strIniPath
    x = GetPrivateProfileString(sSection, sEntry, "", sRetBuf, iLenBuf, sFileName)
    sValue = Strings.Trim(Strings.Left$(sRetBuf, x))

    If sValue <> "" Then
        getFromIni = sValue
    Else
        getFromIni = vbNullChar
    End If
End Function
# C:\config.ini
[path]
db=\\server\folder\bdd.mdb

私の getFromIni 関数は実際にはかなりうまく機能しますが、定数を宣言したいときはそうではありません (まったくコンパイルされません)。代わりにグローバル変数を試しましたが、何らかの理由で機能しません。同じプロジェクト内の別のフォームから使用すると、変数が見つかりません(constとして宣言されている場合にのみ機能しますが、宣言できません)関数から値を取得するときの const として)。

どうしたの?

4

2 に答える 2

3

CONST文字列の値として関数呼び出しを割り当てることはできません。これを実行すると、「定数式が必要です」というエラーが表示されると思います。

于 2012-10-05T13:54:02.170 に答える
1

変化する

Public Const PATH_DB As String = getFromIni("path","db","C:\config.ini")

Public PATH_DB As String 

初期化メソッドでINIファイルから値を取得する次の呼び出しを行います(たとえば、データベースオープンイベント)

PATH_DB = getFromIni("path","db","C:\config.ini")
于 2012-10-05T13:53:25.417 に答える