-
Циркуль (31.10.08 17:34) [0]procedure TForm1.Button1Click(Sender: TObject);
var
SL: TStringList;
begin
SL := TstringList.Create;
try
SL.Add('1');
Caption := '''' + Format('%2.0s', ['1']) + Format('%2.0s', [SL[0]]) + '''';
finally
Sl.Free;
end;
Exit;
end;
Внимание вопрос: какой Caption получицо? :)
У кого как, а у меня ' 1 ', хотя, казалось бы, должно быть ' 1 1' -
Palladin © (31.10.08 17:47) [1]'1' в первом вызове считается как Char, указание prec каким то образом портит ситуацию если это String, но не влияет если это Char (лень разбираться)Caption := '''' + Format('%2.0s', [String('1')]) + Format('%2.0s', [SL[0]]) + '''';
увидишь страшную странностьCaption := '''' + Format('%2s', ['1']) + Format('%2s', [SL[0]]) + '''';
увидишь, что все хорошо... -
Palladin © (31.10.08 17:48) [2]
> указание prec каким то образом портит ситуацию если это
> String
возможно считается, что передан Single... -
Rouse_ © (31.10.08 18:57) [3]
> хотя, казалось бы, должно быть ' 1 1'
А справку нужно внимательней читать.The precision specifier, if present in the format string, specifies the maximum length of the resulting string. If the argument is a string that is longer than this maximum, the string is truncated.
Соответственно SL[0] являясь именно строкой урезался до нуля, а первый, являясь Char-ом остался как есть...
Если бы обьявить какFormat('%2.0s', [SL[0][1]])
то было-бы ' 1 1'