Ty coś tutaj pokręciłeś i na dłuższą metę, może to powodować błędne działanie programu.
Warunek if else dla Twojego przykładu jest prosty: jeżeli prawda zrób to, jeżeli nie zrób tamto, nie ma innych możliwości.
Dla pewności przeprowadziłem test z istniejącym (u mnie) kluczem:
- Kod: Zaznacz cały
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TRegistry *Rejestr = new TRegistry();
Rejestr->RootKey = HKEY_LOCAL_MACHINE;
Rejestr->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
if(!Rejestr->ValueExists("ATICCC"))
{
ShowMessage("Klucz NIE istnieje");
}
else
{
ShowMessage("Klucz istnieje");
}
}
wynik: komunikat "Klucz istnieje"
następnie wprowadziłem nazwę klucza, który nie istnieje:
- Kod: Zaznacz cały
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TRegistry *Rejestr = new TRegistry();
Rejestr->RootKey = HKEY_LOCAL_MACHINE;
Rejestr->OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run", false);
if(!Rejestr->ValueExists("ATICCC_1"))
{
ShowMessage("Klucz NIE istnieje");
}
else
{
ShowMessage("Klucz istnieje");
}
}
wynik: komunikat "Klucz NIE istnieje"
Wszystko działa prawidłowo, gdyż inaczej być nie może.
To nie Twój program popełnia błąd, tylko Ty, coś przeoczyłeś i w dalszej pracy nad programem zaowocuje to kolejnymi błędami, gdyż nie rozwiązałeś problemu, lecz "zamiotłeś go pod dywan". Nie wiesz dlaczego warunek nie działa.