[C++, WinAPI] Porównanie wartości _bstr_t oraz LPSTR. Konwersja.
Ostatnio zmodyfikowano 2012-12-08 20:06
berkov Temat założony przez niniejszego użytkownika |
[C++, WinAPI] Porównanie wartości _bstr_t oraz LPSTR. Konwersja. » 2012-12-08 19:29:34 Hey ho. proboje porownac dwie wartosci z _bstr_t oraz LPSTR. Doszukalem sie dokumentacji o _bstr_t oraz BSTR ale przyznaje ze srednio ja zrozumialem. W kazdym badz razie ponizszy kod zawsze zwraca false "NIEROWNE". Przy debuggowaniu jak podladam wartosci obu zmiennych to sa identyczne, czyli "text" (pointer oczywiscie inny). Nie rozumiem tego. Pewnie znowu robie jakis glupi blad ktorego nie widze. _bstr_t a = "text"; LPSTR b =( LPSTR ) GlobalAlloc( GPTR, sizeof(( char * ) a ) ); strcpy( b, a );
LPSTR c = "text"; if( b == c ) MessageBox( 0, "ROWNE!", 0, 0 ); else MessageBox( 0, "NIEROWNE", 0, 0 ); p.s. Swoja droga troche nie rozumiem co sie wpisuje w rozmiarze w GlobalAlloc. Nawet jak tam wpisze GlobalAlloc( GPTR, 1) to i tak w b bede mial "text", "1" to nie za malo? Po co ta zmienna? No chyba ze to i tak pointer i nie ma znaczenia jaka ma wielkosc.... dzieki |
|
Admixior |
» 2012-12-08 19:33:19 Nie możesz porónać 2 wskaźników w ten sposób a==b o wtedy sprawdzisz czy pokazują na te same adresy. Do porównania służy strcmp(a,b)==0 //takie samo |
|
berkov Temat założony przez niniejszego użytkownika |
» 2012-12-08 19:36:35 HMM..
no tez tak myslalem.. wiec wczesniej sprobowalem: if (*b == *c) MessageBox (0, "ROWNE!",0,0); else MessageBox (0, "NIEROWNE",0,0);
ale to z drugiej storny zawsze zwraca TRUE!.. nawet jak wartosci sa zupelnie inne.. dlaczego? |
|
berkov Temat założony przez niniejszego użytkownika |
» 2012-12-08 19:45:09 @Admixior - dzieki, oczywiscie dziala!
ale dalej mam dwa pytania: 1. czemu nie moge uzyc *b==*c? 2. czemu nie ma znaczenia co wpisze w rozmiarze w GlobalAlloc? nawet jak wpisze GlobalAlloc( GPTR, 1) to wszystko jest ok.
|
|
kubawal |
» 2012-12-08 19:51:08 1. czemu nie moge uzyc *b==*c? |
Jeśli masz: LPSTR s = "BLEBLE" , to * s == 'B' . Łapiesz już? s wskazuje na łańcuch, a *s ma jego pierwszą literę. Tak samo (*s) + 1 zawiera drugą, (*s) + 2 na trzecią itd. |
|
berkov Temat założony przez niniejszego użytkownika |
» 2012-12-08 20:06:44 No racja!.. dzieki.. troche mi wstyd! :-)
ktos wie co z pyt 2? |
|
« 1 » |