Ist auch kein Problem für mich:
-1 ist ja Binär alle Bits gesetzt, was dann wieder (in C auch) TRUE entspricht. Alles was nicht NUll ist, ist TRUE;
Früher, in Turbo Pascal Zeiten wurde nur das unterste Bit ausgewertet, da hab ich oftmals
mit inc(b); das Bit umgedreht und aus FALSE wurde TRUE, das geht heut nicht mehr, grad nochmal probiert.
Für Einsteiger ist das aber sicher verwirrend, das TRUE -1 ist.
Code: Alles auswählen
var b:Boolean;
procedure TForm1.FormCreate(Sender: TObject);
begin
b:=boolean(-1); { ist TRUE }
if b then caption:='True' else caption:='False';
end;
Code: Alles auswählen
var b:Boolean;
procedure TForm1.FormCreate(Sender: TObject);
begin
b:=boolean(-1); { ist TRUE }
inc(b); { b ist nun FALSE }
if b then caption:='True' else caption:='False';
end;
egal ob der Standardtyp Byte oder Word oder...., durch das increment wird b zu Null und damit wieder FALSE
beim nächsten increment wieder TRUE, aber das wars dann erstmal für die nächsten xx increments....
@ente: so müsste dann dein Aufruf aussehen:
BoolToStr(ArrayBoolWerte, '1', '0');