I usually use integer cast to boolean values, sample: var cond: boolean; i: integer; begin cond := true;
writeln(inttostr(integer(cond))); i := 0; if boolean(i) then writeln('true') else writeln('false'); end; best regards José Benedito JBS Soluções Consulting Systems Development c <josebened...@gmail.com>ont...@jbsolucoes.net www.jbsolucoes.net skype: s...@jbsolucoes.net +55 22 30251654 +55 22 996064279 On Tue, Oct 7, 2014 at 3:46 PM, silvioprog <silviop...@gmail.com> wrote: > On Sat, Oct 4, 2014 at 6:28 AM, Reinier Olislagers < > reinierolislag...@gmail.com> wrote: > >> On 03/10/2014 21:16, silvioprog wrote: >> > When I use the TIniFile to save my configurations, it saves the boolean >> > values as 0 and 1. >> > >> > Is there any way to save these values as string (true/false) instead >> > of integer (0/1)? If not, can I send a patch to implement that?! >> >> 1. Write your own wrapper? >> 2. AFAIR, there already is a bug report+patch in the bug tracker on >> extending TInifiles. > > > Thanks. > > Internally it uses this functions: > > ... > function CharToBool(AChar: char): boolean; > begin > Result := (Achar = '1'); > end; > > function BoolToChar(ABool: boolean): char; > begin > if ABool then > Result := '1' > else > Result := '0'; > end; > ... > > This functions could be replaced by functions from SysUtils functions, > allowing compatibility with words like 0/1 (as is now), true/false, yes/no > (USA), sim/não (Brazil), foo/bar (any) etc. Then: > > Instead of: > > function TCustomIniFile.ReadBool(const Section, Ident: string; Default: > Boolean): Boolean; > var > s: string; > begin > Result := Default; > s := ReadString(Section, Ident, ''); > if s > '' then > Result := CharToBool(s[1]); > end; > > Could be: > > function TCustomIniFile.ReadBool(const Section, Ident: string; Default: > Boolean): Boolean; > var > s: string; > begin > Result := Default; > s := ReadString(Section, Ident, ''); > if s > '' then > Result := SysUtils.StrToBoolDef(s[1], False); > end; > > And, instead of: > > procedure TCustomIniFile.WriteBool(const Section, Ident: string; Value: > Boolean); > begin > WriteString(Section, Ident, BoolToChar(Value)); > end; > > Could be: > > procedure TCustomIniFile.WriteBool(const Section, Ident: string; Value: > Boolean); > begin > WriteString(Section, Ident, SysUtils.BoolToStr(Value, True)); > end; > > So I could use with: > > initialization > SetLength(SysUtils.TrueBoolStrs, 1); > SetLength(SysUtils.FalseBoolStrs, 1); > SysUtils.TrueBoolStrs[0] := 'true'; // or other > SysUtils.FalseBoolStrs[0] := 'false'; // or other > > Just ideas hehe.. > > -- > Silvio Clécio > My public projects - github.com/silvioprog > > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal >
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal