Thema: Delphi BoolToStr improved

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#4

AW: BoolToStr improved

  Alt 27. Jan 2011, 16:28
[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 Delphi-Referenz durchsuchenTrueBoolStrs und Delphi-Referenz durchsuchenFalseBoolStrs 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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Jan 2011 um 16:31 Uhr)
  Mit Zitat antworten Zitat