DOBON.NETプログラミング道掲示板

No34105 の記事


■34105 / )  Re[6]: 参照dllへの文字列引数をutf8で渡したい。
□投稿者/ ukots 一般人(9回)-(2019/01/17(Thu) 17:03:14)
  • アイコンNo34104に返信(魔界の仮面弁士さんの記事)

    Dim intptr As Integer = NLPIR_ParagraphProcess(ybyt, 1)
    Dim plen As Integer = lstrlenA(intptr)
    Dim bf(plen - 1) As Byte
    Marshal.Copy(intptr, bf, 0, bf.Length)
    Dim pstr As String = System.Text.Encoding.UTF8.GetString(bf)
    これで0hは付加されませんでした。

    Double NLPIR_FileProcess(
     const char *sSourceFilename,
     const char *sResultFilename,
     int bPOStagged = 1);については、

    Dim srcStr As String = "d:\data\漢字\temp.txt"
    Dim dstStr As String = "d:\data\漢字\result.txt"

    Dim bytSrc As Byte() = Encoding.UTF8.GetBytes(srcStr & vbNullChar)
    Dim ptrSrc As IntPtr = Marshal.AllocHGlobal(bytSrc.Length)
    Marshal.Copy(bytSrc, 0, ptrSrc, bytSrc.Length)

    Dim bytDst As Byte() = Encoding.UTF8.GetBytes(dstStr & vbNullChar)
    Dim ptrDst As IntPtr = Marshal.AllocHGlobal(bytDst.Length)
    Marshal.Copy(bytDst, 0, ptrDst, bytDst.Length)

    Dim ret As Double = NLPIR_FileProcess(ptrSrc, ptrDst, 1)
    では機能しません。

    上記でディレクトリの漢字を削除したPathでは問題なくresult.txt作成され、内容も期待したものが入っていました。つまり、
    Dim srcStr As String = "d:\data\temp.txt"
    Dim dstStr As String = "d:\data\result.txt"

    NLPIR_FileProcessにutf8のファイルパスを渡せても、NLPIR_FileProcessからutf8のままでWindowsのファイルシステムにアクセスしてもファイルを探せないのだろうと素人的に推測しています。

    以上。


違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -