Конференция "Прочее" » Нашел какую-то фичу (может глюк) в D6...
 
  • Циркуль (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'
 
Конференция "Прочее" » Нашел какую-то фичу (может глюк) в D6...
Есть новые Нет новых   [134446   +31][b:0][p:0.001]