Petit souci avec BoolToStr [Résolu]

Signaler
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006
-
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006
-
Salut,



Je souhaite convertir un boolean de telle manière que :

false = '0' en string;

true = '1' en string;



La fonction BoolToStr(valeur,flag) donne false 0 et true -1 si flag
est false et donne la première valeur des array TrueBoolStrs et
FalseBoolStrs si flag est true, avec par défaut les string 'true'
et 'false'.



Ces array ne sont apparement pas directement accessible et il faudrait les créer ce que j'ai fait :

SetLength(TrueBoolStrs,2);

SetLength(FalseBoolStrs,2);



TrueBoolStrs[0] := '1';

trueBoolStrs[1] := 'true';

FalseBoolStrs[0] := '0';

FalseBoolStrs[1] := 'false';


Et bien cela ne marche pas!



booltostr(true,true) donne 'true' et booltostr(false,true) donne 'false'.



Quoi moi y en a pas compris


Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
A voir également:

4 réponses

Messages postés
99
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
26 juillet 2007
2
Bonjour

Curieux en effet. J'ai essayé avec Delphi7 :

SetLength(TrueBoolStrs,2);
SetLength(FalseBoolStrs,2);TrueBoolStrs[0] := '1';

trueBoolStrs[1] := 'true';
FalseBoolStrs[0] := '0';
FalseBoolStrs[1] := 'false';


ShowMessage(booltostr(true,true))

et j'obtiens '1' comme prévu ???

voici ce que trouve dans le sysutil.pas

function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;
const
cSimpleBoolStrs: array [boolean] of String = ('0', '-1');
begin
if UseBoolStrs then
begin
VerifyBoolStrArray;
if B then
Result := TrueBoolStrs[0]
else
Result := FalseBoolStrs[0];
end
else
Result := cSimpleBoolStrs[B];
end;

et

procedure VerifyBoolStrArray;
begin
if Length(TrueBoolStrs) = 0 then
begin
SetLength(TrueBoolStrs, 1);
TrueBoolStrs[0] := DefaultTrueBoolStr; //= 'True'
end;
if Length(FalseBoolStrs) = 0 then
begin
SetLength(FalseBoolStrs, 1);
FalseBoolStrs[0] := DefaultFalseBoolStr; //= 'False'

end;
end;

Si ça peux t'aider ...

Tu peux aussi faire :
const
BoolStrArray : array[false..true] of string = ('0','1');
et
ShowMessage(BollStrArray[UnBoolean]);

Roud59
Messages postés
106
Date d'inscription
mardi 18 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2007

Salut, une méthode très simple, si j'ai bien compris la question :
Convertir une variable boolean en une interprétation string:
Ord(True) 1 & Ord(False) 0 donc....

var teste: boolean;
begin
teste := true;
showmessage(inttostr(ord(teste)));
end;

sinon on peut faire ça propre fonction qui examinerai le boolean et qui retournerai un string en fonction de celui-ci.

A plus

-wG- irc.heliosnet.org - #programmation
Messages postés
106
Date d'inscription
mardi 18 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2007

Je tien à rapeller que ce que j'ai dis (ord(true) [...]) n'est valable que pour un type BOOLEAN et non pas pour les types ByteBool, WordBool, LongBool vu qu'eux Ord(True) <> 0 (-1). Donc dans ce cas, une solution simple serait la création d'une fonction minime qui effectue la comparaison.

-wG- irc.heliosnet.org - #programmation
Messages postés
228
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
25 octobre 2006

J'ai toruvé mon erreur. Merci à toi roud59 de m'avoir aiguillé sur sysutils.pas.



J'avais simplement et bêtement redéclaré TrueBoolStrs et FalseBoolStrs dans mon code

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.