| 分類:[.NET 全般]
度々、失礼致します。 今回もよろしくお願い致します。
2010のデバッガが使うことができ、そこで不思議な現象を見つけました。 VB6でも確認しましたがそのようにはならないので、.net 2010でもVB6と同じ動作を行うような方法 or 設定を教えて下さい。
iniDataGetという関数を作成しました。 iniDataGetでフルパスのファイル名を渡しています。(g_strIniFileName) このファイル名は変わることがないので、処理の一番初めで以下のように設定をしています。
1回目のiniDataGetを呼ぶ時に、g_strIniFileNameをウオッチで確認すると、正常なファイル名が入っています。 しかし、iniDataGetに入り、GetPrivateProfileString 実行後に、値が変わります。
前:C:\..(長いので省略)..\aaaaaaaa.ini 後:C:\..(長いので省略)..\aaaaaaaa
サフィックスが消えてしまいます。
そして、心当たりがあるのが Public Declare Function GetPrivateProfileString の部分です。 VB6は、As Anyだったのですが、2010ではエラーとなったため、As Stringに変更しました。
いろいろ調べてみましたが、私の力だけではどうにも解決できそうもありません。
どうぞ、みなさま方のお力をお貸しくださいませ。
よろしくお願い致します。
<呼び元> g_strIniFileName = My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".ini" 'フルパスでのファイル名設定
strWork = iniDataGet(g_strIniFileName, "LOG", "LOGKEEPDAY") '1回目 ・ ・ ・ strWork = iniDataGet(g_strIniFileName, "DOC", "MAN") '2回目
<呼び先> Public Function iniDataGet(ByRef FileName As String, ByRef Section As String, ByRef key As String) As String Dim characters As Integer Dim KeyValue As New VB6.FixedLengthString(128) Dim strX As String Dim retString As String
On Error Resume Next
characters = GetPrivateProfileString(Section, key, "", KeyValue.Value, 127, FileName) '<−−ここで実行後、変わる If characters > 0 Then
. . . . End Function
<定義> Public g_strIniFileName As String
Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Integer, _ ByVal lpFileName As String) As Integer |