PutIni GetIni 複数の変数

解決


道産子  2006-12-20 19:43:41  No: 134668

質問です。  VB6環境  XPにて 
PutIniを使ってiniへ書込みをしているのですが、オブジェクトとキーの変数の 
コードを簡単にしたいのですが、わかりません。 

PutIni "外来担当表", "ADDText1", Combo1, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" 
PutIni "外来担当表", "ADDText2", Combo2, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" 
PutIni "外来担当表", "ADDText3", Combo3, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" 
PutIni "外来担当表", "ADDText4", Combo4, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" 

また、GetIniに関してもわからない 
Label1 = GetIni("外来担当表", "ADDText1", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini") 
Label2 = GetIni("外来担当表", "ADDText2", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini") 
Label3 = GetIni("外来担当表", "ADDText3", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini") 
Label4 = GetIni("外来担当表", "ADDText4", "", "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini") 

ご教授おねがいします。


Blue  2006-12-20 20:02:09  No: 134669

>PutIni GetIni 
これらは自作の関数でしょうか?
VB6にそれらの関数は標準にありませんけれども。

>コードを簡単にしたいのですが、わかりません。 
うまいことループさせればよさそうですが。。。
何がわかりませんか?

Combo1〜Combo4およびLabel1〜Label4
はコントロール配列には出来ないのでしょうか?


道産子  2006-12-20 20:08:37  No: 134670

失礼しました。

Option Explicit
Private Declare Function GetPrivateProfileString _
        Lib "kernel32" Alias "GetPrivateProfileStringA" _
            (ByVal lpAppName As String, _
             ByVal lpKeyName As Any, _
             ByVal lpDefault As String, _
             ByVal lpReturnedString As String, _
             ByVal nSize As Long, _
             ByVal lpFileName As String) As Long

Private Declare Function WritePrivateProfileString _
        Lib "kernel32" Alias "WritePrivateProfileStringA" _
            (ByVal lpAppName As String, _
             ByVal lpKeyName As Any, _
             ByVal lpString As Any, _
             ByVal lpFileName As String) As Long

Public Function GetIni(ApName As String, KeyName As String, _
                       Default As String, Filename As String _
                      ) As String
    'INIファイルから参照したいキーの値を取得する
    'ApName   : セクション名
    'KeyName  : 項目名
    'Default  : 項目が存在しない場合の初期値
    'FileName : 参照ファイル名
    '****************************************
    Dim strResult As String
    strResult = Space$(255)
    Call GetPrivateProfileString(ApName, _
                                 KeyName, Default, _
                                 strResult, _
                                 Len(strResult), _
                                 Filename)
    GetIni = Left$(strResult, InStr(strResult, Chr$(0)) - 1)
End Function

Public Sub PutIni(ApName As String, _
                  KeyName As String, _
                  Param As String, _
                  Filename As String)
    'INIファイルに新たなキーの値を書込む
    '   ※既存のキーがあれば更新・なければ新規作成する
    'ApName   : セクション名
    'KeyName  : 項目名
    'Param    : 更新する値
    'FileName : 書出ファイル名
    '****************************************
    Call WritePrivateProfileString(ApName, _
                                   KeyName, _
                                   Param, _
                                   Filename)
End Sub

複数のコントロールの結合がわかりません。
combo.nameとlabel.nameの番号は自動で同じ番号をみるのでしょうか?


道産子  2006-12-20 20:10:54  No: 134671

連投失礼します。

PutIniでは、Combo1に対してiniへADDText1(キー)書込み

GetIniでは、ADDText1(キー)からLabel1へ読み込み

となります。


Blue  2006-12-20 20:15:03  No: 134672

>combo.nameとlabel.nameの番号は自動で同じ番号をみるのでしょうか?
ごめんなさい、意味がわかりません。

Visual Basic 6.0 初級講座
コントロール配列
http://homepage1.nifty.com/rucio/main/shokyu/jugyou20.htm

コントロール配列を使えば簡単にループで設定出来ます。
(使わなくても出来ないことはないが、コンパイル時にエラーを見つけることが出来ないので)

>PutIni "外来担当表", "ADDText1", Combo1, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" 
>PutIni "外来担当表", "ADDText2", Combo2, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" 
>PutIni "外来担当表", "ADDText3", Combo3, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" 
>PutIni "外来担当表", "ADDText4", Combo4, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini" 

Dim i As Integer
For i = 1 To 4 Step 1
    PutIni "外来担当表", "ADDText" & CStr(i), Combo(i).Text, "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini"
Next i

GetIniの方も同様にしてみてください。
どうしてもコントロール配列に出来なければ、
>Combo(i).Text

Me.Controls("Comb" & CStr(i)).Text 
としてみてください。(試していないので動くかは確かではないです)


道産子  2006-12-20 23:59:37  No: 134673

Blue様  ありがとうございました。
無事解決することと共にコントロールについて理解しました。

'ini書込ボタン
    '****************************************
    'iniファイルパスの指定
            Const INI_PATH As String = _
                "\\192.168.60.253\Admin共有\用度\VB\Window_Data\Window.ini"
    '****************************************
    '外来担当表・土曜外来-書込
            Dim i As Integer
                For i = 1 To 87 Step 1
                    PutIni "外来担当表", "ADDText" & CStr(i), Combo(i), INI_PATH
            Next i

'外来担当表・土曜外来-読込
        Dim r As Integer
            For r = 1 To 87 Step 1
                Combo(r) = GetIni("外来担当表", "ADDText" & CStr(r), "", INI_PATH)
        Next r

と無事成功しました。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加