VC++で文字列を返すDLL関数を作成しました。
LPCSTR GetVcString(void)
これをVBでStringとして受け取り、MsgBoxで表示すると正常に取得できているようなのですが、Lenで文字数を取得すると変な値が返ってきます。
1. Dim Ret As String
2. Ret=GetVcString()
3. MsgBox(Ret) ← VCで返された文字列は正常に表示されている
4. MsgBox(Str(Len(Ret))) ← 実際の文字数とはかけ離れた数値になる
2行目と3行目の間に、
Ret=Left(Ret,InStr(Ret,vbNullChar)-1)
を噛ませれば文字数は正常な値になるのですが、このような処理をしなくても正常に文字数を取得する方法があれば教えてください。
No.1ベストアンサー
- 回答日時:
こんにちは。
maruru01です。関数が返す文字列が、固定長で残りの部分がvbNullCharで埋まっているので、vbNullCharの手前までを抜き出す処理を入れなければいけません。
WinAPI関数などでは、このようなことはよく見られます。
単に文字数を出したいなら、
MsgBox(InStr(Ret, vbNullChar)-1)
でいいと思いますが。
でもその後でいろいろと処理するなら、
Ret=Left(Ret,InStr(Ret,vbNullChar)-1)
を入れた方がいいと思います。
たかが1行だし。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) test([)コマンドによる条件判定 2 2022/08/10 12:28
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Java Java 南京錠 2 2023/02/04 11:46
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) Excelの文字列を数字に変換する方法について 6 2023/07/31 21:18
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
実行シェルからCOBOLへパラメー...
-
DOSバッチで変数の値を変数名に...
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
ResultSetの内部構造(Java)
-
wsprintf関数の使い方について
-
Stringクラスの変数の格納アド...
-
【JavaScript】指定箇所に文字...
-
hiddenの値を消したくない!
-
【Excel VBA】繰り返し処理がで...
-
Javascriptでマシン固有の情報...
-
VB6で固定長の文字列の長さを変...
-
matchesを否定文として使う方法...
-
excel vba 時間計算と条件分岐...
-
結合した文字列をファイル名に...
-
指定した日付が何日前なのかを...
-
char型での演算子
-
getParameterの値変更
-
C言語の変数(LSB)の合わせ込...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ダブルクォーテーションを含む...
-
ArrayListの要素数の上限
-
特定の文字列を複数抜き出した...
-
javaのCSVデータ読込についてです
-
wsprintf関数の使い方について
-
BCD形式で時刻を!
-
結合した文字列をファイル名に...
-
Evaluate()に文字列の形式の数...
-
C言語の変数(LSB)の合わせ込...
-
実行シェルからCOBOLへパラメー...
-
hiddenの値を消したくない!
-
VB6,論理演算子Orの使い方がわ...
-
DateTimePickerに値を入れたい...
-
char型での演算子
-
String str = "a\\\\b\\\\c";
-
Javaの問題なのですが、「3文字...
-
8桁整数を限りなく短い文字列に...
-
matchesを否定文として使う方法...
-
DOSバッチで変数の値を変数名に...
-
excel vba 時間計算と条件分岐...
おすすめ情報