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

VisualBasic6で、APIなどで返された文字列に\0が含まれていた場合、
VB内部で扱う文字列に変換させる方法やその逆のAPIに渡すとき
C用の文字列に変換する関数や方法はあるのでしょうか?

A 回答 (3件)

>逆にNULL終端文字列を要求される場合


>str="Test String" & chr(0)
>の様な感じでいいかと思います。

不要です。
DeclareステートメントでAPIを呼ぶ場合は自動的にNULL文字は1つ付加されて渡されます。

上記のようにする必要があるのは、NULL文字の連続が要求される場合です。
    • good
    • 0

NULL終端文字列からVBのStringへは、だいたい以下のようにすればいいと思います。


nullPos = InStr(str, Chr(0))
str = Left(str, nullPos - 1) '\0:NULL以降を取り除く

逆にNULL終端文字列を要求される場合
str="Test String" & chr(0)
の様な感じでいいかと思います。
    • good
    • 0

Dim strDir As String



'あらかじめ260文字分の領域を準備(べつにスペースじゃなくても他の文字でもかまいません)
strDir = Space(260)

'システムディレクトリを取得
Call GetSystemDirectory(strDir)

'\0以降をカットする
strDir = Left(strDir, InStr(1, strDir, Chr(0)) - 1)


こんな感じですかね。

ポイントは、
1.あらかじめ領域はVB側で準備
2.\0はInStrで検索可能
です。

参考URL:http://www.vbvbvb.com/jp/gtips/0501/gGetSystemDi …
    • good
    • 0

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