Перлы Delphi
не мог не поделиться. Через 8 лет активного писания в этой среде сегодня обратил внимание что функция booltostr, конвертирующая, соответственно boolean в string, встроенная в VCL возвращает странные результаты:
true='-1'
false='0'
посмотрел исходник этой функции и долго ржал... потом стало весьма грустно.....
var TrueBoolStrs: array of String; FalseBoolStrs: array of String; const DefaultTrueBoolStr = 'True'; // DO NOT LOCALIZE DefaultFalseBoolStr = 'False'; // DO NOT LOCALIZE ............. procedure VerifyBoolStrArray; begin if Length(TrueBoolStrs) = 0 then begin SetLength(TrueBoolStrs, 1); TrueBoolStrs[0] := DefaultTrueBoolStr; end; if Length(FalseBoolStrs) = 0 then begin SetLength(FalseBoolStrs, 1); FalseBoolStrs[0] := DefaultFalseBoolStr; end; end; 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;
как- то после этого сразу исчезло желание ругать горе- программистов за качество кода.... если уж авторы Delphi такое творят...
3 комментария
Рекомендуемые комментарии