• ベストアンサー

GetPrivateProfileString

TAGOSAKU7の回答

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

田吾作7です。 Nullの扱いですが、それはあくまでCの記述であって、CのNullとVBのNullは意味が違います。 GetPrivateProfileStringではvbNullStringを使用します。 Public Declare Function GetPrivateProfileString Lib "kernel32" _     Alias "GetPrivateProfileStringA" ( _     ByVal lpApplicationName As String, _     ByVal lpKeyName As Any, _     ByVal lpDefault As String, _     ByVal lpReturnedString As String, _     ByVal nSize As Long, _     ByVal lpFileName As String) As Long Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" _     (ByVal lpBuffer As String, ByVal nSize As Long) As Long 'ウィンドウズディレクトリを返す Public Function GetWinDir() As String   Dim lpBuffer As String * 260   Call GetWindowsDirectory(lpBuffer, Len(lpBuffer))   GetWinDir = Left(lpBuffer, InStr(lpBuffer, Chr$(0)) - 1)   If Right(GetWinDir, 1) <> "\" Then GetWinDir = GetWinDir & "\" End Function 'INIファイルからセクションを列挙する Private Sub Main()   Dim lngRetValue   As Long       'ステータス   Dim strIniFileName As String      '設定ファイル名   Dim strSectionName As String      'セクション名   Dim strKeyName   As String      'キー名   Dim strDefault   As String      'デフォルト値   Dim strReturned   As String * 1023  '値を返す文字列   Dim wkVal      As Variant   Dim i        As Long      'イニシャルファイルの指定   strIniFileName = GetWinDir & "System.ini"   'セクションにNULLをセット   strSectionName = vbNullString   'キーにNULLセット   strKeyName = vbNullString   '見つからないときに返す文字列   strDefault = "キーが見つからない"      'キーが帰る文字列に領域をセット   strReturned = String(Len(strReturned), vbNullChar)      'キーの取得   lngRetValue = GetPrivateProfileString _         (ByVal strSectionName _         , ByVal strKeyName _         , ByVal strDefault _         , strReturned _         , ByVal Len(strReturned) _         , ByVal (strIniFileName & vbNullChar))   'キーの取得成功   If lngRetValue >= 0 Then     '結果の出力     wkVal = Split(strReturned, vbNullChar)     For i = LBound(wkVal) To UBound(wkVal)       Debug.Print wkVal(i)       If wkVal(i) = "" Then         Exit For       End If     Next i   'キーの取得失敗   Else     Debug.Print "失敗しました"   End If End Sub

rough
質問者

お礼

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

関連するQ&A

  • 「設定値」は設定できないのですか?

    アクセスです。 Sub test() Forms("Fログイン").txt_サイト名.IMEMode = "Hiragana" End Sub にしたら、型が一致しません。(Error 13)になりました。 ヘルプを見ると「設定値」に「Hiragana」と書いてあったからそうしたのですがダメでした。 しかし、「Visual Basic」の項目の4を設定したら問題なく設定できました。 マイクロソフトのヘルプの見方がよくわからないのですが vbaで値を設定する時は、設定値ではなくVisual Basicの値を設定するべきなのでしょうか?

  • またまたVBAのデータの型変数で質問

    あるセルに「=IF(N50 =O50,"","×")」の関数が入ってます。比較して合っているならNULL、相違なら×(バツ)をいれるというものです。 質問はこのセルの値をマクロである変数に格納するにはどんな型を使用すればいいのか?です。 格納できればどんな方法でもいいです。 Dim buf as String と変数の宣言してbufに上記の関数の結果のみを入れたいのですが型が違いますとエラーがでます。セルが算術式のときの型ってなんでしょうか? 目的はNULLは大丈夫なのですが、バツ(×)を変数に格納したいです。 よろしくお願いいたします。

  • テーブルのどの項目が主キーか判断する方法

    SQLで、  desc table1 と入力するとテーブルの項目名、NOT NULLの有無、型を表示させることができますが、 同じような表示形式で主キーかどうかを確認することはできますか? ご存知の人がいましたら教えてください。

  • WEP セキュリティ設定

    WEPの設定の仕方を教えてください。 調べてみると、WEPキーを設定する、などとありますが、WEPキーとは適当に自分で作って入力してもいいでしょうか? あるページではアクセスポイントと一致するなど、よくわからないことが書いてあるんですが、簡単にWEPを設定する方法はありますか? あと、WEPキーとは何でしょうか?

  • ウェブアプリの設計に問題がないかご指摘いただければと思います。

    ウェブアプリの設計に問題がないかご指摘いただければと思います。 たとえば顧客情報入力フォームがありまして、テキストを入力し、確認ボタンを押すと、入力値のバリデーションを実行し、問題があれば入力画面に戻り、エラーメッセージも表示します。問題がなければ入力値をセッションに格納し、実行したいSQLの入ったクラス名、メソッド名、post_keyもセッションに格納し、確認画面を表示します。 確認画面の「送信する」とか「登録する」ボタンを押すと、 セッションに格納されたpost_keyと同一のpost_keyをaction.phpにポストし、 リフレクションを使ってセッションに格納されたクラス名、メソッド名のSQLを実行します(大抵INSERT処理です)。 この処理で意図しない動作が起こるなど、設計上の問題はないでしょうか? ちなみに、タブブラウザなどで別のタブに別のページを開くと、セッションに格納された入力値や、SQLのクラス名、メソッド名、post_keyは削除されます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ヘルプファイルはどこにあるのですか?

    VBAについて質問です。 Sub OnErrorTest() On Error GoTo ErrorTrap Dim i As Integer i = "test" ErrorTrap: MsgBox "エラー番号:" & Err.Number & vbCrLf & _ "エラー内容:" & Err.Description & vbCrLf & _ "ヘルプファイル名" & Err.HelpContext & vbCrLf & _ "プロジェクト名:" & Err.Source End Sub 上記のコードを実行すると エラー番号:13 エラー内容:型が一致しません。 ヘルプファイル名1000013 プロジェクト名:VBAProject が返ってきます。 しかしエラーなのにヘルプは表示されません。 なのにヘルプファイル名1000013となるのはどういう事なのでしょうか? この1000013と言う数字は何を表していますか?

  • インデックスまたは主キーにはnull値を使用できません

    こんにちは。 アクセス初心者です。 練習のため給与管理をAccessで作っています。 単純なクエリを基に入力フォームを作りましたが (1)新規データを入力すると 「インデックスまたは主キーにはnull値を使用できません」 というエラーが出ます。 すべてのフィールドにデータは入っているのですが・・。 確認すべき場所があれば教えてください。 (2)またフォームに、1列目が会社リスト、2列目が会社名というコンボボックスを作りました。 コンボボックスで選択後、フォームで表示されるのは会社名、 テーブルに入力されるのは会社リストという設定はできますか? どうぞ宜しくお願いします。

  • プログラミングの問題が分かりません。どなたか助けて

    こんな問題が出たのですがまったくもってわかりませんだれか助けてください センサーから入力される符号付き8ビット(char)の入力を一定期間ため込み,値が入力される度に,その平均値を計算し続けるシステムを考える.実装の方法にはいろいろ種類があるが,ここでは,配列をリングバッファとして利用する.リングバッファは,実際にデータを蓄える buffer という名の char 型の配列,最後にサンプル値を代入した位置を示す変数 pos という名の int 型の変数および現在のデータの総和を示す int 型変数 sum を要素に持つ構造体で作成する.リングバッファに値が挿入されるときは,以下の作業を行う. pos を一つ増やす pos がバッファのサイズを超えていたら pos を 0 にする sum から pos の位置のバッファの値を引く リングバッファに挿入したい値を pos の位置のバッファに書く 今挿入した値を sum に足す sum をバッファの長さで割り算して平均値を出力する ここでは,効果的な計算のために,リングバッファのサイズを 128 とする.そのため,変数 pos は 0 から 127 までの値を持つことになる. という問題でこのプログラムを書いてみたいのですがわかりません どなたか教えてくれませんか?

  • access Dlookup関数について

    いつもこちらではお世話になっています。 型が一致しません。エラー13 といったエラーが出ています。スペースを消したり、入力しなおしたりいろいろやってみたのですが、 このようなエラーがずっと出ています。「"」「#」「&」の位置などが問題なのでしょうか? Me.前回検針値 = DLookup("検針値", "T_水道検針", "部屋CD =" & Me!部屋CD & "" _ And "検針日 =#" & Me!前回検針日 & "#") ヘルプを見てもいろいろ調べても、わからないのでよろしくお願いします

  • TEXTでのPRIMARY KEYの使い方

    customer テーブルを作って、その中にname, email, passwordをそれぞれtext型が入ってます。その後にalter table customer add customer primary key(email);で、emailにprimary keyをつけようとしてるのですが、ERROR1170 Bolb/Text column 'email' used in key specification without a key lengthと言ってます。textの大きさを指定とかするべきなのでしょうか??本当はcreateの最初の段階で、primary keyを入れたかったのですが、その時も同じエラーが出たため、tableを作ってから追加しようと試みてます。他の型で試してみたら、primary keyは難なく追加できました。text型だと何かやり方が違うのでしょうか。ちなみに全てnot nullに設定してあります。回答お願いします。

    • ベストアンサー
    • MySQL