Petit souci avec BoolToStr [Résolu]

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

4 réponses

Répondre au sujet
roud59 103 Messages postés jeudi 16 septembre 2004Date d'inscription 26 juillet 2007 Dernière intervention - 7 juil. 2005 à 13:46
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de roud59
taye78 108 Messages postés mardi 18 juin 2002Date d'inscription 13 janvier 2007 Dernière intervention - 8 juil. 2005 à 00:40
0
Utile
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
taye78 108 Messages postés mardi 18 juin 2002Date d'inscription 13 janvier 2007 Dernière intervention - 8 juil. 2005 à 00:43
0
Utile
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
vincentstryckmans 230 Messages postés lundi 5 avril 2004Date d'inscription 25 octobre 2006 Dernière intervention - 8 juil. 2005 à 08:09
0
Utile
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.