Bool true werte negative warum?

B.l.o.c.k.

Semiprofi
Thread Starter
Mitglied seit
10.03.2006
Beiträge
972
Ich bastel gerade ein Dezimalzahl zu Binär Prog. Dabei setze ich einfach bool variabel True oder false. Wenn die nun Ausgegeben werden sind sie aber negativ. hat das einen bestimmten Grund. Und kann man das verhindern?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
du speicherst eine zahl wie 10010110111 in haufen true oder false variablen?
wieso behandelst du den string nicht als array und arbeitest so hier:

bin[2] = 1;
bin[3] = 0;
bin[4] = 1;

etc..

das wäre wesentlich sinvoller :)
 
:haha: Jo stimmt ich hab nen Bool array gemacht. :shot:
Aber trotzdem merkwürdig das die Boolvariablen negativ sind.

Edit Jetzt mal nen String array gacht nun sieht es fein aus^^
 
Zuletzt bearbeitet:
aber das is echt strange, das nen boolwert negativ ist, das einzige was ich mir da vorstellen könnte, das der nicht initialisiert wurde oder ähnliches!
 
Code:
procedure TTest.Bnt1SubrechClick(Sender: TObject);
var zaehler:integer;
IpOkt1:array [1..8] of boolean;
IpOktAus:array [1..5] of string[20];
begin

  CoBEingabeSub[1]:=CoB1Subrech.Text;
  CoBEingabeSub[2]:=CoB2Subrech.Text;
  CoBEingabeSub[3]:=CoB3Subrech.Text;
  CoBEingabeSub[4]:=CoB4Subrech.Text;

  zaehler:=1;
repeat if StrToInt(CoBEingabeSub[zaehler])>=128 then    //1.Bit
    begin IpOkt1[1]:=true;
    CoBEingabeSub[zaehler]:=IntToStr(StrToInt(CoBEingabeSub[zaehler])-127)
    end
  else IpOkt1[1]:=false;
//Bit2-Bit6 fehlen.
 IpOktAus[zaehler]:=BoolToStr(IpOkt1[1]) //Es wird nur das erste Bit ausgegeben.
inc(zaehler);
until (zaehler=5)
Da ist mal ein stark gekürze Version. Also es hier wird nur das erste Bit geprüft. Ich sollte vll. erwähnen das es sich um Delphi handelt.
 
true ist 1 und false ist irgendwas ungleich 1. es muss aber nicht 0 sein.
dafür kenne ich leider nicht delphi genug.
 
Mhh, meinen Delphi-Experten erreich ich z.Zt. nicht. Aber Hauptsache das Programm läuft.
Aber noch mal danke für den tip mit dem String. Manchmal sieht man den Baum vor lauter Wälder nicht ;)
 
Mhh, meinen Delphi-Experten erreich ich z.Zt. nicht. Aber Hauptsache das Programm läuft.
Aber noch mal danke für den tip mit dem String. Manchmal sieht man den Baum vor lauter Wälder nicht ;)
Welche Delphi Version hast du ?

Bei mir in der 7.0 Personal Edition ist true auch -1, wenn ich es mit der Funktion BooltoStr umwandle :hmm:

Schreib dir doch zur Not deine eigene Funktion, die einfach 1 ausgibt, wenn der Parameter true ist und 0 bei false
 
Welche Delphi Version hast du ?

Bei mir in der 7.0 Personal Edition ist true auch -1, wenn ich es mit der Funktion BooltoStr umwandle :hmm:

Schreib dir doch zur Not deine eigene Funktion, die einfach 1 ausgibt, wenn der Parameter true ist und 0 bei false
Hab auch sieben. Ich benutz jetzt einfach einen String. So muss ich das ganze nicht noch umwandeln ect.
 
aber schau mal in die math unit von delphi rein, ich bin mir fast sicher, dass es da was gibt, was dir das schon machen kann (also dec zu bin ;D )

edit: 2006 dev.std macht aus dem false ne null!
und es gibt scheinbar nur ne inttohex ;)
 
Zuletzt bearbeitet:
aber schau mal in die math unit von delphi rein, ich bin mir fast sicher, dass es da was gibt, was dir das schon machen kann (also dec zu bin ;D )

edit: 2006 dev.std macht aus dem false ne null!
False ist ja auch schon so eine 0.
und es gibt scheinbar nur ne inttohex ;)
Ja, deswegen hab ich eine recht umständlich art mit if gemacht um aus einer int Zahl eine Binär zumachen. if zahl >128 dann 1 sonst 0; if zahl >64 dann 1 sonst 0; usw. das halt in einer schleife drinn damit alle 4 zahlen der Subnetmask durch gelaufen werden.
 
das sollte doch mit ner case schleife fast besser gehen oder?
bzw. wenn du das ganze rekursiv machst, müsste das schön funktionieren!
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh