format関数で全角と半角で桁をそろえるには

解決


つくも  2012-06-28 00:06:49  No: 42544  IP: 192.*.*.*

次のコードでENDを揃えた状態で出力したいのですが
どのようにすればよいのでしょうか?
文字を扱う場合はsのみと思うのですが
全角の場合2文字としないで
1文字とするためうまくいかないように思います。
何かほかの方法があるのでしょうか

よろしくお願いします。

  Memo1.Lines.Add(Format('%-10sEND', ['あああ']));
  Memo1.Lines.Add(Format('%-10sEND', ['いい']));

  Memo1.Lines.Add(Format('%-10sEND', ['aaa']));
  Memo1.Lines.Add(Format('%-10sEND', ['bb']));

出力結果
あああ       END
いい        END
aaa       END
bb        END

期待する結果
あああ    END
いい      END
aaa       END
bb        END

delphi XE2
Windows7 64bit

編集 削除
igy  2012-06-28 09:00:58  No: 42545  IP: 192.*.*.*

以下のようなのは、いかがですか?

procedure TForm1.Button11Click(Sender: TObject);

    function Test(s: String): String;
    var
        strTest: AnsiString;
        strSpc: String;
        SpcLen: Integer;
    begin
        strTest := s;
        strSpc := '';
        SpcLen := 10 - Length(strTest);
        if SpcLen > 0 then  strSpc := StringOfChar(' ', SpcLen);
        Result := Format('%s%sEND', [s, strSpc]);
    end;
begin
    Memo1.Lines.Clear;

    Memo1.Lines.Add(Test('あああ'));
    Memo1.Lines.Add(Test('いい'));
    Memo1.Lines.Add(Test('aaa'));
    Memo1.Lines.Add(Test('bb'));
end;

編集 削除
つくも  2012-06-28 23:42:38  No: 42546  IP: 192.*.*.*

ありがとうございます
登録されたソースで出来ました

編集 削除