Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Boolean in Integer


ceding - Sa 05.03.05 20:24
Titel: Boolean in Integer
nacht!
wie wird Boolean in Integer umgewandelt??


Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Sa 05.03.2005 um 19:24


goog - Sa 05.03.05 20:41

Hi ceding!

Das weiß nur Bill Gates :wink:
Nein im Ernst, das ist nicht möglich :!:

gruß goog


AXMD - Sa 05.03.05 20:52

Sicher ist da s möglich :roll:


Delphi-Quelltext
1:
MyInt := Ord(MyBool)                    


AXMD


GTA-Place - Sa 05.03.05 20:53

Ne andere Frage ist, was bringt das?


raziel - Sa 05.03.05 20:54

Doch:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
begin
  // Rückwärts
  showmessage(inttostr(integer(checkbox1.Checked)));
  // Vorwärts
  if Boolean(integer(checkbox1.checked)) then
    showmessage('checked!');
end;

// Oder auch
procedure TForm1.Button2Click(Sender: TObject);
begin
  if Boolean(24then
    showmessage('checked!');
end;


Bei letzterem gilt: Ist der Integer = 0 gilt das als False. Ist er != 0 gilt das als True.

//edit: 1. Zu langsam und 2. auch noch die Frage falsch rum gelesen... Ich glaub ich werd alt... :roll:


NeoInDerMATRIX - Sa 05.03.05 20:56

Hi,

also das geht ganz einfach!


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Function BoolToStr(vWert: Boolean): String;
Begin
    If (vWert) Then
        Result := 'TRUE'
    Else
        Result := 'FALSE';
End;

Function IntToBool(vWert: Integer): Boolean;
Begin
    Result := vWert <> 0;
End;


Cu
Neo


Delete - Sa 05.03.05 20:58

es gibt BoolToStr(), und daraus kann man natürlich auch StrToInt() machen

da steht auch was von der Funktion BoolToInt()
http://www.koders.com/delphi/fid35D6AFBE2806DAF1AB58CE6B986A6A40118D2478.aspx

Wozu brauchst du das?


retnyg - Sa 05.03.05 21:24

omg... was gibts da zu konvertieren ?
ist das teil 0 dann isses false isses 1 dann true


ceding - So 06.03.05 16:45

tach !
Auf die Frage "was bringt das?" erspart mir ne menge Arbeit GTA-Place
Schade Neo_in_der_MATRIX brauch ich nicht
Wie kann man nor so ein ... schreiben OneOfTen geht nicht

raziel danke!


Delete - So 06.03.05 16:59

was geht nicht?


ceding - So 06.03.05 17:03

na BoolToInt()
oder BoolToStr()


Motzi - So 06.03.05 17:03

retnyg hat folgendes geschrieben:
omg... was gibts da zu konvertieren ?
ist das teil 0 dann isses false isses 1 dann true

Nicht ganz... ist es 0, dann ist es False, ist es _ungleich_ 0, ist es True..!


Delete - So 06.03.05 17:16

ceding hat folgendes geschrieben:
na BoolToInt()
oder BoolToStr()


haste dir schon mal den dabeistehenden link angeguckt?


ceding - Fr 18.03.05 18:09

öh ja aber was hilft mir das?
ich find das nicht


Sprint - Fr 18.03.05 18:37

Boolean - 1 Byte
ByteBool - 1 Byte
WordBool - 2 Bytes
LongBool - 4 Bytes

Motzi hat folgendes geschrieben:
Nicht ganz... ist es 0, dann ist es False, ist es _ungleich_ 0, ist es True..!

Damit ist Motzi's Aussage bei allen vier Boolesche Typen von Delphi bestätigt.


retnyg - Fr 18.03.05 18:42

user profile iconSprint hat folgendes geschrieben:
Boolean - 1 Byte

dachte immer ein boolean sei ein bit gross :mrgreen:


delfiphan - Fr 18.03.05 19:08

(War das soeben eine ernste Bemerkung? Ein Boolean ist ein Byte gross, das stimmt schon)


retnyg - Fr 18.03.05 19:13

habs grade in der delphi-hilfe gesehen - welch platzverschwendung !
da hätt ich ja bislang gleich mit byte arbeiten können... naja, wird wohl für den compiler einfacher zu verwalten sein, sonst braucht der nen dword um sich die speicheradresse des bool's zu merken und nochmal ein byte, um die position des booleans in einem byte zu finden....


Popov - Fr 18.03.05 19:18

user profile iconretnyg hat folgendes geschrieben:
dachte immer ein boolean sei ein bit gross :mrgreen:


Eigentlich schon, aber es gibt die kleinste Verbrauchseinheit bei Variablen, und die ist ein Byte groß. Bei Flags kriegst du in einen Byte mehrere Boolwerte rein, bei Variablen kommst du nicht unter ein Byte weg.


delfiphan - Fr 18.03.05 19:19

Es gibt vor allem keine Pointer, die auf ein Bit zeigen können. Wenn du Platz sparen möchtest, kannst du set of byte nehmen, dann bekommst du 256 Bits in 32 Bytes verpackt.