преобразование char * в BSTR *, который содержит специальные символы - PullRequest
0 голосов
/ 21 апреля 2011

Я пытаюсь преобразовать char* в BSTR*, и мой char* содержит специальные символы из зашифрованного. Я перепробовал несколько подходов, найденных в сети, но, возвращаясь к вызывающему vb-коду, я всегда получаю что-то другое. Я почти уверен, что это связано со специальными символами, потому что, если у меня их нет, кажется, все в порядке ....

мой код - что-то вроде этого ...

_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);

любая помощь будет принята с благодарностью !!!

Спасибо !!!!

1 Ответ

0 голосов
/ 06 октября 2011

Если вы управляете буфером, вы, вероятно, не хотите манипулировать 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;
}

Также прочитайте Полное руководство Эрика поСемантика БСТР .

...