poblem ze zmiennymi typu bool

dział ogólny

poblem ze zmiennymi typu bool

Nowy postprzez marcinp1984 » czwartek, 1 kwietnia 2010, 19:29

Witam
Mam jakiś dziwny problem i nie bardo potrafię go rozwiązać. Dotyczy on zmiennych typu bool. Mianowicie chodzi o to, że mam jakąś funkcję typu void, która wykonuje dwie czynności, w zależności od danych wejściowych. Funkcja ta od pół roku działa dobrze i nie ma z nią problemu :P Dzisiaj dodałem do niej dwie zmienne typu bool. Chciałem żeby w zależności od danych wejściowych, albo jednej zmiennej została przypisana wartość true, albo drugiej. Niby nic trudnego a jednak... Nie chciało mi coś działać więc zobaczyłem co jest pod te zmienne przypisywane... Jeśli jest false to jest 0 więc ok. Ale jeśli true to wyskakuje -1 :/ Co się może z tym dziać??? Próbowałem dać sobie spokój ze zmiennymi boolowskimi i dałem zwykłe inty. I niestety to samo. Tam gdzie przypisuje 0 jest 0 ale tam gdzie 1 wyskakuje -1 :/ A wszystko to w C++Builderze 6.0.
Ma ktoś jakiś pomysł czemu tak się może dziać???
Avatar użytkownika
marcinp1984
Bladawiec
Bladawiec
 
Posty: 9
Dołączył(a): niedziela, 21 marca 2010, 20:47
PodziÄ™kowaÅ‚ : 5
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows XPFirefox

Re: poblem ze zmiennymi typu bool

Nowy postprzez Cyfrowy Baron » piÄ…tek, 2 kwietnia 2010, 07:26

-1 to prawidłowa wartość zmiennej typu bool i jest to wartość true. Każda wartość różna od 0 to true, a 0 to false. Sprawdź:

Kod: Zaznacz cały

void __fastcall TForm1
::Button3Click(TObject *Sender)
{
 bool i = -1;

 if(i == true) Label1->Caption = "TRUE";
 else Label1->Caption = "FALSE";
}
 



Nie bardzo wiadomo co Ty robisz z tymi zmiennymi, więc trudno coś więcej odpowiedzieć, tą wartość -1 zmiennej bool pewnie uzyskujesz pobierając ją za pomocą funkcji BoolToStr i funkcja zwraca ci wartość -1 dla TRUE i 0 dla FALSE. Ta funkcja zwraca wartość -1 dla true i 0 dla false, jeżeli drugi argument tej funkcji zostanie ustawiony na false, w przeciwnym razie zwróci wartość w postaci tekstu TRUE lub FALSE. Jeżeli chcesz otrzymywać wartości 0 lub 1 to możesz to zrobić tak:

Kod: Zaznacz cały
 bool i = true;

 String tekst = (String)(int)i;

 Label1->Caption = tekst; 
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości