0

を に変換しようとしてchar*いますが、暗号化されていない特殊文字が含まれています。Web で見つかったいくつかのアプローチを試してみましたが、VB コードの呼び出しに戻ると、いつも何か違う結果になります。これは特殊文字と関係があると確信しています。BSTR*char*

私のコードはこれらの線に沿ったものです...

_export myFunction(BSTR *VBtextin, BSTR *VBpassword, BSTR *VBtextout, FPINT encrypt) {

BSTR password = SysAllocString (*VBpassword);
char* myChar;
myChar = (char*) password  //is this ok to cast? it seems to remain the same when i print out.

//then I encrypt the myChar in some function...and want to convert back to BSTR
//i've tried a few ways like below, and some other ways i've seen online...to no avail.

_bstr_t temp(myChar);
SysReAllocString(VBtextout, myChar);

どんな助けでも大歓迎です!!!

ありがとう!!!!

4

1 に答える 1

0

char *バッファを操作している場合、おそらく直接操作したくないでしょう。最初にコピーを作成します。

_export myFunction(BSTR *VBtextin, BSTR *VBpassword, BSTR *VBtextout, FPINT encrypt) {

  UINT length = SysStringLen(*VBpassword) + 1;
  char* my_char = new char[length];
  HRESULT hr = StringCchCopy(my_char, length, *VBpassword);

それがすべて成功したら、変換を実行します。必要に応じて、失敗も処理するようにしてください。

  if (SUCCEEDED(hr)) {
    // Perform transformations...
  }

次に、コピーを作成します。

  *VBtextout = SysAllocString(my_char);
  delete [] my_char;
}

また、 Eric の Complete Guide to BSTR Semanticsも読んでください。

于 2011-10-06T16:15:41.967 に答える