# Type bool prüfen



## Kleiner Wicht (1. September 2005)

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 ?


----------



## deepthroat (1. September 2005)

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:
	
	
	



```
bool x = static_cast<bool>(ausdruck);
```
So ganz kann ich allerdings nicht nachvollziehen was du überhaupt willst bzw. meinst.


----------



## Kleiner Wicht (1. September 2005)

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.


----------



## deepthroat (1. September 2005)

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:
	
	
	



```
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:
	
	
	



```
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.
   ...
}
```


----------



## Kleiner Wicht (1. September 2005)

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


----------



## Kleiner Wicht (1. September 2005)

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.


----------

