Перлы 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 комментария
Рекомендуемые комментарии