tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: パスワードがかかったAccessにiniファイルからのデータを持ってくるとエラー
投稿日: 2006/02/24(Fri) 08:31
投稿者YAS
とみぃださん,こんにちは。

><DllImport("KERNEL32.DLL", CharSet:=CharSet.Auto)> _
>Public Shared Function GetPrivateProfileString( _
>    <MarshalAs(UnmanagedType.LPTStr)> ByVal lpAppName As String, _
>    <MarshalAs(UnmanagedType.LPTStr)> ByVal lpKeyName As String, _
>    <MarshalAs(UnmanagedType.LPTStr)> ByVal lpDefault As String, _
>    <MarshalAs(UnmanagedType.LPTStr)> ByVal lpReturnedString As String, _
>    ByVal nSize As Integer, _
>    <MarshalAs(UnmanagedType.LPTStr)> ByVal iniFilename As String) As Integer
>End Function

の宣言ですが,値が返されるlpReturnedStringはString型よりもStringBuilder型の方が
よいと思います。String型はある意味定数で,値の変更を許しません。String型の
変数の内容を変える場合,確か内部的には新しいString型の変数が作成され,結果が
そこにコピーされて戻されるはずです。一方StringBuffer型は内容を変更できます。
バッファを用意してそこの内容を書き換えさせる場合にはStringBuffer型の方がふさわしい
といえます。
最後にlpReturnedString.ToStringとすればよいはずです。

それでもエラーになるようでしたらDebug.WriteLine(String.Format ""{0}"",""{1}""",b,c)
を仕込んでどんな文字列が渡されているか確かめたらよいと思います。そこでエラーが
出る以上,b と c の中身が異なっていることは間違いないと思います。

文字列が同じだとしたらエンコードが違うかもしれません。もしかしてパスワードに2バイト
文字とか使えたりするんですか?(調べないで書いてます。すみません。)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。