アプリ版:「スタンプのみでお礼する」機能のリリースについて

 初めまして私はVB6.0の初心者でVB6.0について勉強しています。現在以下のようなiniファイル操作について分からないことがあります。

・プログラム内容

テキストボックスにログインID(例えばenshu)を入力しOKボタンを押して、iniファイル(例えばrenshu.ini)にある情報と照合してもしiniファイルに無かったら「ログインできません」というメッセージボックスを出すプログラム。

条件
・フォームにテキストボックス(Text1.Text)とコマンドボタン(OKボタン)がある
・Iniファイルの形式(renshu.ini)
IDNO(セクション名)
OK_ID(キー名)1 = “enshu”(ログインID)
OK_ID(キー名)2 = “ren”(ログインID)
OK_ID(キー名)3 = “shu”(ログインID)
上のような形式が不特定多数ある
・Iniファイルの保存場所
c:\work\renshu.ini

私の場合以下のように書きました。
Private Sub OK_Click() 'OKボタンがクリックされたら

If  Text1.Text <> GetIniString("IDNO", "OK_ID", "c:\work\renshu.ini") Then '入力したログインIDがiniファイルに無い場合
'メッセージ表示
MsgBox "ログインできません"

End If
End Sub
としましたがメッセージボックスが表示されません。なぜなのでしょうか。教えてください。宜しくお願いいたします。

A 回答 (13件中11~13件)

手元にVB6.0なんて無いので、とりあえず...



VB6.0に限らず、Visual Studio系の開発環境はデバッグモードでの動作が可能です。ソースコードの、If文の所の左端をクリックすると行が小豆色になると思うので、そのままデバッグモードで実行してみましょう。

そうすると、その行で処理が止まります(行が黄色くなるハズ)。その状態で「Text1.Text」など、変数にカーソルを合わせると、その内容が浮き出て表示されるので、実際にどういう値や文字列が入っているかを見ることが出来ます。

また、その状態で「Ctrl+G」とかを押すと、イミディエイトウィンドウというウィンドウが開きます。ここでは、その場で命令を実行させたりできます。
そこで、

?GetIniString("IDNO", "OK_ID", "c:\work\renshu.ini")

のように、先頭に「?」を付けて関数や変数を打ち込んでみてください。その内容が表示されます。なので、たとえばここで直接GetIniStringの中身をいろいろ変えながら試して、実際に何が返ってきているかということを調べる事が出来ます。

また、先頭に「?」を付けずに、

Text1.Text="あいうえお"

などと打つと、その変数やプロパティに値をいれる(内容を変える)ことも可能です。

こういうツールをうまく使いこなして、まずは自分で解決をはかりましょう。

この回答への補足

ご回答ありがとうございます。

>VB6.0に限らず、Visual Studio系の開発環境はデバッグモードでの動作が可能です

デバッグモードで実行というのは具体的にはどうすればよいのでしょうか。If文の所の左端をクリックして行が小豆色になった後実行ボタンを押せばよいのでしょうか。教えてください。宜しくお願いします。

補足日時:2008/05/09 09:50
    • good
    • 0

GetIniStringはDeclare宣言した関数なのでしょうか?


VB6の標準装備の関数ではないと思いますが ・・・

GetIniStringの中身の詳細を投稿しましょう

もし WinAPIの GetPrivateProfileStringを使っているなら
キー名は OK_ID1 などの完全名が必要だろうと思いますよ

本当にGetIniStringで取得したデータと Text1.Textが同一なのかどうかを簡単にチェックするなら
Dim ss as String
ss = GetIniString("IDNO", "OK_ID", "c:\work\renshu.ini")
if Text1.Text <> ss then
といったん変数に代入しておいて比較してみましょう

この回答への補足

ご回答ありがとうございます。
以下のような感じでよろしいでしょうか。
>GetIniStringの中身の詳細を投稿しましょう
Public Function GetIniString( _
ByVal garSection As String, _
ByVal garKey As String, _
ByVal garFileName As String _
) As String

Dim llngRet As Long
Dim lstrValue As String * 255

llngRet = GetPrivateProfileString(garSection, garKey, "not found", lstrValue, 255, garFileName)
GetIniString = Left$(lstrValue, InStr(lstrValue, vbNullChar) - 1)

End Function

補足日時:2008/05/08 18:13
    • good
    • 0
この回答へのお礼

続けざまで申し訳ございません。
>本当にGetIniStringで取得したデータと Text1.Textが同一なのかどうかを簡単にチェックするなら
Dim ss as String
ss = GetIniString("IDNO", "OK_ID", "c:\work\renshu.ini")
if Text1.Text <> ss then
といったん変数に代入しておいて比較してみましょう

 試しに上記のようにやってみたら、GetIniStringで取得したデータと Text1.Textは同一ではありませんでした。一体何が原因なのでしょうか。

お礼日時:2008/05/08 18:32

(1)iniファイルの中身


セクション名は[]で囲みます。質問では裸で記述されているようです。
(2)パラグラフの指定
iniファイルではOK_ID1、OK_ID2、…なのでは?
プログラムからは"OK_ID"としか指定していません。1や2はどうなった?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
[IDNO](セクション名)

>iniファイルではOK_ID1、OK_ID2、…なのでは?
はいそうです。

OK_ID1(キー名) = “enshu”(ログインID)
OK_ID2(キー名) = “ren”(ログインID)
OK_ID3(キー名) = “shu”(ログインID)
上記のように書きたかったんです。

>1や2はどうなった?
これはOK_ID1とOK_ID2のことを言っているのでしょうか?

お礼日時:2008/05/08 18:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!