[C++ & WinApi] Problem z RegQueryInfoKey

0

Witam.

int main()
{
   char sciezka[1000] = "Software\\Gadu-Gadu\\Gadu-Gadu\\Startup\\LastProfile";
   LONG rozmiar = 50;
   LONG *p_size = & rozmiar;
   char vKey[rozmiar];
   
   char *p_value = & vKey[0];
   
   RegQueryValue( HKEY_CURRENT_USER, sciezka, p_value, p_size);
   cout << vKey <<endl;
   system("pause");
return 0;
}

Niby wszystko dziala poprawnie a jednak do vKey jest zapisywana wartosc
"BN?w ?@" a powinno byc "test" i mimo zmiany wartosci klucza funkcja dalej
odczytuje to samo sleep.gif'
Dlczego, albo co ja robie nie tak :/

Pozdrawiam.

0

http://4programmers.net/Forum/118484?h=regqueryvalue#118484
[przyczepił bym się do sprawdzania błędów...]

w skrócie: open/query/close

a w swoim programie masz nie zaincjalizowaną tablicę vKey i nie sprawdzając błędu drukujesz jej zawartość. RegQuery zwraca błąd i nawet nie tyka tej tablicy, ale ty ją drukujesz, dlatego masz smieci, który są w pamięci.

BTW. czy zdajesz sobie sprawę, że vKey to Variable Size Array, bo rozmiar nie jest stałą? :) np. GCC w trybie -pedantic pokaże ci ładnie:
a.cpp: In function int main()': a.cpp:10: error: ISO C++ forbids variable-size array vKey'

0

Nie jestem pewnien ale w DevC++ "jest"(niewiedzialem jak to okreslic) ISO C++ i takiego błędu mi nie pokazuje Oo

0
Patryk [Motoki] napisał(a)

Nie jestem pewnien ale w DevC++ "jest"(niewiedzialem jak to okreslic) ISO C++ i takiego błędu mi nie pokazuje Oo

DevC++?? Nie, nie jest, bo to jest IDE :P
Natomiast GCC jest GNU/ANSI/ISO, do wyboru ;-)
Chodziło mi o to czy w ogóle zdajesz sobie sprawę z takiej konstrukcji jak VSA? Tak na przyszłość... :)

5.14 Arrays of Variable Length

Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C89 mode and in C++. (However, GCC's implementation of variable-length arrays does not yet conform in detail to the ISO C99 standard.)
(...)

0

Nie zdawalem sobie sprawy _ ale na przyszlosc bede wiedzial a co do Dev to on kozysta z gcc...

1 użytkowników online, w tym zalogowanych: 0, gości: 1