No.2ベストアンサー
- 回答日時:
文字列のアドレスを渡して、そのアドレスに文字列
が返却されるタイプであれば、単純に文字列を指定
すればOKです。
関数側で、メモリを確保して、そのアドレスが
返ってくるタイプのインタフェースの場合、VBで
は、ポインタを処理する型がないため、そのアドレ
スの内容を自分の変数の領域に移動させることで、
読み取ります。
移動させる関数は、RtlMoveMemoryで、下記では、
MemCopyとして定義しています。これを使って、
Dimで定義した文字列の領域に(移動前に、必要な
だけの文字を入れておくこと)コピーすればOK
です。
Public Declare Sub MemCopy _
Lib "Kernel32" Alias "RtlMoveMemory" _
(hpvDest As Any, _
hpvSource As Any, _
ByVal cbCopy As Long)
No.1
- 回答日時:
VBとCとのやりとりは、VBからCで作ったDLLを呼出しているんですね。
(Declare....で)だとして、その辺は、MSDNのDLLの呼び出しのあたりに詳しく書かれています。
要は、VBの引数受け渡し方法は、2種類(By Ref,By Val)で、デフォルトは、By Ref(だったかな?)つまり、ポインタ渡しです。
しかし、VBの文字列変数は、独特のメモリの取り方をやってるので、ヘッダー部がついている。また、NULLで終わらないので、Cの文字列とは違う、でも、質問のような受け渡しは可能です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Visual Basic(VBA) 以下のVBAで該当文字列の前後に付与したい。 例 前に付与 abc ユーザーID 12345 後に付 3 2022/04/19 21:50
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) Excel VBAで教えてください 4 2022/05/11 22:20
- Excel(エクセル) エクセル関数で教えて頂きたいです 3 2023/07/24 14:10
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセル関数について 8 2023/06/28 17:04
- ネットワーク 例えば192.168.1.10はプライベートIPアドレスで合っていますか? 3 2022/07/05 01:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
文字列からタブコードを取り除...
-
エクセルで文字列の最大値を抽...
-
Left関数とRight関数を合わせた...
-
MS SQLServer のSQLで文字列の...
-
エクセルで文字列をtxtファイル...
-
VBAでの Replace関数で、ワイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
エクセル 数値データを桁をそ...
-
VBの「As String * 128」とは?
-
Pro c/c++ でホスト変数の後に....
-
[C言語]fputsとfprintfの違い
-
C言語で文字列の中の文字列のカ...
-
VBScriptでEUC文字列をSJIS文字...
-
Msgboxの×が押されたとき
-
16進数を10進数に簡単に変換す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
エクセル 数値データを桁をそ...
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
sedなどで、特定の文字列の後の...
-
MS SQLServer のSQLで文字列の...
-
Left関数とRight関数を合わせた...
-
Msgboxの×が押されたとき
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
C#で年月を比較する
おすすめ情報