Type bool prüfen

Also

Kleine Simple Frage, warauf ich die Antwort nicht weis.

Wie kann ich prüfen ob ein Wert vom Type bool ist ?

true, false werden in bestimmten Routinen in meinem Progrämmchen zugeordnet.

Nun habe ich ma aus true, false andere werte gemacht.
Das findet meen Progrämchen gar nicht lustig und Schmiert ab.

ALso meine Frage lautet:

Wie kann ich prüfen ob ein Wert vom Type bool ist ?
 
Hi.

Also der Datentyp bool in C++ kann genau 2 Werte haben: true oder false.

Wenn du einer boolschen Variablen andere Werte als diese zuweist, wird versucht diese Werte in den Typ bool zu konvertieren. Z.B. lassen sich Integer Werte in diesen Typ überführen. So steht also der Wert 0 traditionell für "false" und jeder andere Wert für "true".

Um zu prüfen ob eine Überführung möglich ist, könntest du static_cast verwenden:
Code:
bool x = static_cast<bool>(ausdruck);
So ganz kann ich allerdings nicht nachvollziehen was du überhaupt willst bzw. meinst.
 
werd mich gleich mit deiner variante beschäftigen,

es sieht folgendermaßen aus, ich lese von einer bestimmten Quelle werte aus.

Diese Werte sind entweder true oder false (0 oder 1)

Mein Prögrammchen also empfängt die Werte, und setzt demenmtsprechend
meine vorhandenen Checkboxen auf true oder false.

Sobald jetzt aber jemand die vorhandene Quelle manipuliert und dort ganz andere
Werte einschreibt, stürzt mein Programm ab.

CheckBox_1->Checked = StrToBool(Registry->ReadString(a));

So wenn a kein boolischer Wert ist, dann schmiert das Programm ab.
 
Aha. Du willst also prüfen ob ein bestimmter String als boolscher Wert interpretiert werden kann.

Jetzt kenne ich die StrToBool Funktion nicht. Evtl. wirft diese ja eine Ausnahme, die du abfangen kannst wenn der String nicht als bool interpretiert werden kann?! Man könnte dazu erstmal versuchen jegliche Exceptions abzufangen:
Code:
try {
  CheckBox_1->Checked = StrToBool(Registry->ReadString(a));
} catch (...) {
   // ignore
}

Evtl. gibt es ja auch eine TryStrToBool Funktion (analog zu Delphi) die true zurückgibt, wenn der String erfolgreich als bool gelesen werden konnte und anderenfalls false.

Ansonsten kannst du auch die Standard C++ Bibliothek nutzen:
Code:
istringstream in;
bool b;

in.str (Registry->ReadString(a));
if (in >> b) { // wert konnte als bool interpretiert werden.
   CheckBox_1->Checked = b;
} else { // Fehler: Eingabe ist nicht als bool zu interpretieren.
   ...
}
 
MM
teste gleich mal deine Variante;

in der Zeit habe ich mir ne Methode angelegt, die einfach nur prüft ob
die übergebenen werte als bool werte gelten. Naja gefällt mir ja nicht, aber
es funktioniert und dann kann ich erst daraufhin StrToBool anwenden.

StrToBool("hallo") // stürzt ab, weil nicht bool wert;


aber deine variante sieht jut aus, muss ich mal testen
 
TryStrToBool

is ja jeil, geht super ohne Probleme

Meine war auch nur ne Notlösung diese gab auch wie TryStrToBool
einen boolischen wert zurück, wenn der zu convertierender ein boolischer war.

okay, jetzt jets weiter, mit meinem Progrämmchen

Vielen Dank für den Tip.
 
Zurück