PoebelundGesocks
Mitglied
Code:
HRESULT test;
TestLib::_TestLib *ptr;
CoInitialize(NULL);
TestLib::_TestLibPtr p(__uuidof(TestLib::TestLib));
ptr = p;
BSTR bstrKaese;
test = ptr->fkt(&bstrKaese);
cout << test << " " <<bstrKaese << " " << *bstrKaese << "\n";
char * test2= (char*)bstrKaese;
int i = 0, j = 0;
while (i < 178){
cout << test2+(j*sizeof(char));
j+=2;
i++;
}
i=0;
j=0;
cout << "\n";
while((*test2+j*sizeof(char)) >= '0' && (*test2+j*sizeof(char)) <= '9' || (*test2+j*sizeof(char)) == ' '){
cout << test2+(j*sizeof(char));
j+=2;
i++;
}
cout << "debug 8* :" <<test2+(8*sizeof(char));
Mein Aufrufender C++ code.
Er ruft eine Methode "fkt" in einer C# DLL auf, BSTR "bstrKaese" ist ein Pointer auf die erste Stelle des zurückgegebenen Strings.
Die Rückgabe ist insgesamt 178 zeichen lang.
Die ersten 8 sind "3293014 ".
Lasse ich mir nun die Zeichen Folgendermassen ausgeben:
Code:
while (i < 178){
cout << test2+(j*sizeof(char));
j+=2;
i++;
}
Ersetze ich die bedingung der Schleife für den bereich der Zahlen (0-9) und der Leertaste(Space)
Code:
(*test2+j*sizeof(char)) >= '0' && (*test2+j*sizeof(char)) <= '9' || (*test2+j*sizeof(char)) == ' '
"3293014 "
Allerdings wird immer nach "3293" abgebrochen, da die "0" anscheinend nicht als solche erkannt wird.
gebe ich über
Code:
cout << "debug 8* :" <<test2+(8*sizeof(char));
Was könnte diese Null sein - und vorallem, wieso ist sie es?
Danke für die Hilfe bereits im Vorraus, ich hoffe die Problembeschreibung ist halbwegs verständlich.
Zuletzt bearbeitet: