タイトル : 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バイト 文字とか使えたりするんですか?(調べないで書いてます。すみません。) |