- ベストアンサー
VB←→API(C)の文字列加工?
VisualBasic6で、APIなどで返された文字列に\0が含まれていた場合、 VB内部で扱う文字列に変換させる方法やその逆のAPIに渡すとき C用の文字列に変換する関数や方法はあるのでしょうか?
- kounesi
- お礼率1% (12/798)
- Visual Basic
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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で検索可能 です。
その他の回答 (2)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>逆にNULL終端文字列を要求される場合 >str="Test String" & chr(0) >の様な感じでいいかと思います。 不要です。 DeclareステートメントでAPIを呼ぶ場合は自動的にNULL文字は1つ付加されて渡されます。 上記のようにする必要があるのは、NULL文字の連続が要求される場合です。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
NULL終端文字列からVBのStringへは、だいたい以下のようにすればいいと思います。 nullPos = InStr(str, Chr(0)) str = Left(str, nullPos - 1) '\0:NULL以降を取り除く 逆にNULL終端文字列を要求される場合 str="Test String" & chr(0) の様な感じでいいかと思います。
関連するQ&A
- C#でテキストボックスに入力した文字列をビット列に変換
C#で電子透かしのプログラムを作ってるのですが、テキストボックスに入力した文字列(日本語)をビット列に変換する方法はないでしょうか? VBだとchngBit()という関数がありますが、アルファベットしかダメみたいです。
- ベストアンサー
- その他(プログラミング・開発)
- C#で文字列を数値に変換する方法
Visual Stdio .NET 2003を使っています。 C#で文字列(数字)を数値に変換したいのですが、 VBでいうVal関数のような物はありますか?例えば、 double a; a = Val("3.14"); とすると、aに3.14が入るような関数を使いたいです。 検索したのですが、見つかりませんでした。宜しくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- APIについて
文字列をsjisからjisに変換して、 byte型に格納しているのですが dim data() as byte data()をapi関数に渡しているのですが、 apiに渡すときに、apiでの定義は bdata as byte となっていて、バッファを送信するとあります。 この場合、渡す方法としては、data()の配列数分のloopを 行い、1つずつ渡していく方法になるのでしょうか? よくわからない質問かも知れませんが、ご存知の方がいらっしゃいましたらよろしくお願いします。
- 締切済み
- Visual Basic
- C♯で文字列を切り出すには?
C♯の文字列操作について教えてください。 "あいうえお"という文字列があったら、"あ"だけ 切り取って、"いうえお"という文字列がほしいのですが、 どのようにしたら良いのでしょうか? VB.NETでいう、midのようなものがあるかと思ったのですが、 見当たらず…。 サンプルを交えて教えていただけると助かります。 宜しくお願いします。
- ベストアンサー
- C・C++・C#
- VBからCで作成されたDLLへの引数の渡し方
VBからCで作成されたAPI関数への引数の渡し方がわかりません。 C側の引数のデータ型はchar型でポインタ渡しではありません。 ------------------------------------------------ C側 int KANSU(char Mode) VB側 Public Declare Function KANSU Lib "USERAPI.dll" ( ByVal CHAR As Byte) As Long ------------------------------------------------ C側がポインタ渡しの場合は、VB側はSTRING型で別に悩むことはなかったのですが、文字列渡しの場合は、VB側はBYTE型で渡す必要があり、その方法がわかりません。 どなたか、分かる方よろしくお願いします。 ちなみに、VB6.0です。
- ベストアンサー
- Visual Basic
- VB2010でのAPIの使い方を教えてください。
お世話になります。VB初心者です。ごくごく基本的なことを教えてください。 VB2010にて、PCとUSBを介して繋がっている機器からデータのやり取りを行おうとしています。 そのためのAPIが、機器メーカから***.dllという形で提供されています。同様に、これを使ったサンプルソフトもついているのですが、VB6で作ったものなので、VB2010ではそのまま使えません。 このAPIには、USBポートのOpen/CloseやRead/Writeなどの関数があるので、これを使いたいのですが、具体的にプログラム上で、どういうふうに定義(?)すればいいのでしょうか? APIの仕様書には、「API 使用時には ***.h をインクルードして使用してください→#include “***.h”」、「リンク時には、***.lib もリンクしてください」などと書かれています。 まだ、VB2010を勉強し始めたばかりなので、こういう基本的な部分がわかっていません。 お教えいただけると助かります。よろしくお願いします。
- ベストアンサー
- Visual Basic
- VBやC#のDLLを作るとき
VBやC#のDLLを作るとき特別な作り方があるのでしょうか? 少し前にポインタで文字列ももってき方を教えていただいたのですが、VBやC#に持っていけません C++で特別な作り方があるでしょうか? それともVBやC#で特別な引き込み方があるのでしょうか? 特に文字の場合ポインタがないVBに持っていくとき どういう型で返せばいいのでしょうか? よろしくお願いいたします
- ベストアンサー
- C・C++・C#
- WinSock API
IP変換器を使用してRS-232C → 変換器 → PC を1本のLAN上で行う処理を考えています。 しかし、VBも通信もまったくの初心者でなにから手をつけてよいのかがわかりません。ご指導お願いします。 1.APIを使用してのPG作成 WinSock APIは WinSockコントロールとの違いは何でしょうか? またWinSock APIを使用する場合、VBへの組み込み方法を教えてください。
- 締切済み
- Visual Basic