![]() |
StrToBool: Boolean True = -1, False = 0 ?
Ich räume meinen Code gerade ein bisschen auf und das ist mir aufgefallen, dass ich an gewissen Stellen StrToBool verwende.
Warum wird bei True -1 und bei False 0 gespeichert? Ich habe eher mit True=1 und False=0 gerechnet? |
AW: StrToBool: Boolean True = -1, False = 0 ?
0 = False, alles andere = True.
Ein Nonsensbeispielprogrämmelchen dazu:
Delphi-Quellcode:
program Test;
var i : Integer; begin for i := -5 to 5 do begin if boolean(i) then ShowMessage(Format('%d ist wahr',[i])) else ShowMessage(Format('%d ist falsch',[i])); end; end. |
AW: StrToBool: Boolean True = -1, False = 0 ?
und -1 ist das Komplementär zu 0.
00000000 = 0 11111111 = -1 |
AW: StrToBool: Boolean True = -1, False = 0 ?
meine Bescheidenen Lösungen dafür :
Code:
function BoolToStr(Value : Boolean) : String;
begin if Value then Result := 'True' else Result := 'False'; end; function StrToBool(Value : String) : Boolean; begin Result := Value = 'True'; end; function IntToBool(Value : Integer) : Boolean; begin Result := Value = 1; end; function BoolToInt(Value : Boolean) : Byte; begin //if Value then Result := 1 else Result := 0; Result := not (Value = 0); end; |
AW: StrToBool: Boolean True = -1, False = 0 ?
![]() ![]() In C-Sprachen ist oftmals True = Integer(-1) und in Delphi/Pascal ist True = Byte(1). Und das ist nur auf die Kostanten bezogen, wie bereits erwähnt wurde. Bei Auswertung ist überall False = 0 und True <> 0. Demnach ist IntToBool falsch und StrToBool versagt bei Zahlenwerten und anderer Groß-/Kleinschreibung. IntToBool und BoolToInt passen auch nicht zusammen (der nicht auskommentierte Teil) und IntToBool gibt daher immer False zurück. :angle: Es macht absolut keinen Sinn für Alles ständig eigene bescheidene Lösungen zu bauen, wo es gut funktionierende Standardfunktionen gibt, welche dagegen sogar richtig funktionieren. :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz