Petit souci avec BoolToStr [Résolu]

Messages postés
230
Date d'inscription
lundi 5 avril 2004
Dernière intervention
25 octobre 2006
- 7 juil. 2005 à 12:25 - Dernière réponse :
Messages postés
230
Date d'inscription
lundi 5 avril 2004
Dernière intervention
25 octobre 2006
- 8 juil. 2005 à 08:09
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.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
103
Date d'inscription
jeudi 16 septembre 2004
Dernière intervention
26 juillet 2007
- 7 juil. 2005 à 13:46
3
Merci
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

Merci roud59 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de roud59
Messages postés
108
Date d'inscription
mardi 18 juin 2002
Dernière intervention
13 janvier 2007
- 8 juil. 2005 à 00:40
0
Merci
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
Commenter la réponse de taye78
Messages postés
108
Date d'inscription
mardi 18 juin 2002
Dernière intervention
13 janvier 2007
- 8 juil. 2005 à 00:43
0
Merci
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
Commenter la réponse de taye78
Messages postés
230
Date d'inscription
lundi 5 avril 2004
Dernière intervention
25 octobre 2006
- 8 juil. 2005 à 08:09
0
Merci
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.
Commenter la réponse de vincentstryckmans

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.