Thema: Delphi TBooleanHelper

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: TBooleanHelper

  Alt 18. Feb 2021, 19:50
Klar ginge es (meistens)

* spaßig wird es bei MultiThread, den diese Zugriffe sind nicht thread-save

* und warum die globalen variablen umschreiben, anschließend wieder löschen, wodurch sie von anderen wieder neu initialisiert werden müssen,
anstatt direkt nur was Eigenes zu nehmen?

Anstatt die globalen Variablen zu ändern, kannst auch nur deine Lokalen anpassen, wenn leer.
Delphi-Quellcode:
// zuerst B und dann die Strings

function BoolToStrs(B: Boolean; const FalseStr, TrueStr: string): string;
begin
  //VerifyBoolStrArray; // ich geh jetzt einfach mal davon aus das ist schon initialisert, vorallem da man von außen VerifyBoolStrArray nicht aufrufen kann
  if B then
    if TrueStr <> 'then
      Result := TrueStr
    else
      Result := TrueBoolStrs[0]
  else
    if FalseStr <> 'then
      Result := FalseStr
    else
      Result := FalseBoolStrs[0];
end;

function BoolToStrs(B: Boolean; const FalseStr, TrueStr: string): string;
begin
  //VerifyBoolStrArray;
  if B then
    Result := IfThen(TrueStr <> '', TrueStr, TrueBoolStrs[0]) // Result := Coalesce(TrueStr, TrueBoolStrs[0])
  else
    Result := IfThen(FalseStr <> '', FalseStr, FalseBoolStrs[0]); // Result := Coalesce(FalseStr, FalseBoolStrs[0]);

  //Result := IfThen(B, IfThen(TrueStr <> '', TrueStr, TrueBoolStrs[0]), IfThen(FalseStr <> '', FalseStr, FalseBoolStrs[0]));
  //Result := IfThen(B, Coalesce(TrueStr, TrueBoolStrs[0]), Coalesce(FalseStr, FalseBoolStrs[0]));
end;
// soein Coalesce, wie man es aus Datenbanken kenn, hatte ich mir für String/Integer einfach mal nachgebaut

// zuerst die Strings und dann B

function BoolToStrs(B: Boolean; FalseStr, TrueStr: string): string;
begin
  //VerifyBoolStrArray;
  if TrueStr = 'then TrueStr := TrueBoolStrs[0];
  if FalseStr = 'then FalseStr := FalseBoolStrs[0];
  if B then Result := TrueStr else Result := FalseStr;
end;
bzw. BoolToStr oder ToString anstatt TrueBoolStrs/FalseBoolStrs
Delphi-Quellcode:
function BoolToStrs(B: Boolean; const FalseStr, TrueStr: string): string;
begin
  if B and (TrueStr <> '') then
    Result := TrueStr
  else
  if not B and (FalseStr <> '') then
    Result := FalseStr
  else
    Result := B.ToString(TUseBoolStrs.true); // Result := BoolToStr(B, True);
end;
Und wer sich TUseBoolStrs.True ausgedacht hat, gehört ausgepeitscht.
$2B or not $2B

Geändert von himitsu (18. Feb 2021 um 20:04 Uhr)
  Mit Zitat antworten Zitat