Skocz do zawartości

Co jest nie tak


sleeppower

Recommended Posts

bool odczytaj_wartosc_ciag_(HKEY glowny_klucz, //nazwa klucza glownego
                                      LPCTSTR adres_klucza, // nazwa podklucza
                                          LPCTSTR nazwa_wartosci, // nazwa wartosci ktora chcemy odczytac
                                          LPCTSTR sprawdzana_wartosc
                                          )
{
// Funkcja odopwiedzialna jest za srprawdzenie czy podana wartosc w kluczu istnieje
char buffer[1024];
LPCTSTR koncowy;
HKEY hKey;
if(RegOpenKeyEx(glowny_klucz,adres_klucza,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)
{
       
        DWORD dwSize;
                dwSize = sizeof(buffer);
        RegQueryValueEx(hKey,nazwa_wartosci,NULL,NULL,reinterpret_cast<BYTE *>(&buffer),&dwSize);
                koncowy = buffer;
                RegCloseKey(hKey);
                if (koncowy == sprawdzana_wartosc)
                {
                        return true;
                }
                else
                {
                        return false;
                }
}

} // koniec odczytaj_watosc

Kto wie co jest nie tak
pisze w DevC++ Błędu mi zadnego nie wywala ale cos jest nie tak fo mi nie dziala :)

Link do komentarza
Udostępnij na innych stronach

bool odczytaj_wartosc_ciag_(HKEY glowny_klucz, 
                  LPCTSTR adres_klucza, 
                 LPCTSTR nazwa_wartosci, 
                 LPCTSTR sprawdzana_wartosc 
                 ) 
{ 
char buffer[1024]; 
bool takie_same = false ;
char koncowy [1024] ; 
HKEY hKey; 
if(RegOpenKeyEx(glowny_klucz,adres_klucza,0,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS) 
{ 
        
        DWORD dwSize; 
      dwSize = sizeof(buffer); 
        RegQueryValueEx(hKey,nazwa_wartosci,NULL,NULL,reinterpret_cast<BYTE *>(&buffer),&dwSize); 
      
      strcpy(koncowy, buffer) ; 
      RegCloseKey(hKey); 
      
      int koncowy_len = strlen(koncowy) ;
      int spr_len = strlen(sprawdzana_wartosc) ;
      
      takie_same = true ;
      if(koncowy_len == spr_len)
      {
          for(int i = 0 ; i < spr_len ; i++)
          {
              if(koncowy[i] != sprawdzana_wartosc[i])
              {
                  takie_same = false ;
                  break ;
              }    
          }    
      }  
      else
      {
          takie_same = false ;
      }      
} 
return takie_same ;
} 

Skompilowałem program z tą funkcją co widzisz i działa...
Najpierw funkcja sprawdza długość dwóch łańcuchów, a potem (jeśli są równe) sprawdza czy ich wartości są takie same... ;)

Pozdro

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...