[add]
@rollstuhlfahrer: in Math ist das IfThen für Integer und Extended ... das IfThen für Strings gammelt in der StrUtils rum.
@uligerhardt: jupp
(wenn man nebenbei mit seinem Cheff die letzten Sachen für den Arbeitsvertrag macht, dann braucht man sich nicht wundern, wenn viele schon vorher geantwortet haben)
[/add]
Jupp, in Delphi fehlt dieses leider.
Wobei man Delphi dieses aber beibringen könnte, indem man
TrueBoolStrs und
FalseBoolStrs entsprechend erweitert.
BoolToStr nimmt dabei die Werte im Index 0.
Delphi-Quellcode:
//SetLength(TrueBoolStrs, 2);
//TrueBoolStrs[0] := 'yes';
//TrueBoolStrs[1] := DefaultTrueBoolStr;
//SetLength(FalseBoolStrs, 2);
//FalseBoolStrs[0] := 'no';
//FalseBoolStrs[1] := DefaultFalseBoolStr;
VerifyBoolStrArray;
i := Length(TrueBoolStrs);
SetLength(TrueBoolStrs, i + 1);
TrueBoolStrs[i] := TrueBoolStrs[0];
TrueBoolStrs[0] := 'yes';
i := Length(FalseBoolStrs);
SetLength(FalseBoolStrs, i + 1);
FalseBoolStrs[i] := FalseBoolStrs[0];
FalseBoolStrs[0] := 'no';
S := BoolToStr(B, True);
B := StrToBool(S);
Allerdings wird BoolToStr an vielen Stellen in Delphi verwendet, weswegen man den Index 0 besser nicht verändern sollte.
Es bleibt also noch das andere Ende der Array übrig.
Delphi-Quellcode:
//VerifyBoolStrArray;
//SetLength(TrueBoolStrs, 2);
//TrueBoolStrs[1] := 'yes';
//SetLength(FalseBoolStrs, 2);
//FalseBoolStrs[1] := 'no';
VerifyBoolStrArray;
i := Length(TrueBoolStrs);
SetLength(TrueBoolStrs, i + 1);
TrueBoolStrs[i] := '
yes';
i := Length(FalseBoolStrs);
SetLength(FalseBoolStrs, i + 1);
FalseBoolStrs[i] := '
no';
const MyTrueFalse:
array[Boolean]
of string = ('
no', '
yes');
S := IfThen(B, '
yes', False);
S := MyTrueFalse[B];
B := StrToBool(S);
{ IfThen siehe Unit StrUtils }
PS: Aber du hast dabei auch die Umkehrfunktion vergessen, also für das StrToBool.
Delphi-Quellcode:
procedure AddBoolStr(const aYes, aNo: string);
var
i: Integer;
begin
VerifyBoolStrArray;
i := Length(TrueBoolStrs);
SetLength(TrueBoolStrs, i + 1);
TrueBoolStrs[i] := aYes;
i := Length(FalseBoolStrs);
SetLength(FalseBoolStrs, i + 1);
FalseBoolStrs[i] := aNo;
end