-1

のような2行のテキストを含むメモがあります

aaaa : dsfdsfdsffsf
bbbbbbbbbb : fgdfgff

同じ行で「:」を取得したい-次のように

aaaa:dsfsfd
bbbbbbbb :ghjghjgjhjg

私はデルファイとコードを使用しています。

memo.lines.add(some_string + ' : ' + some_string);

使用しようとしましSetLengthたが、今は方法がわかりません。

4

3 に答える 3

4

メモのフォントを のような等幅フォントに設定しCourier Newます。そうすれば、すべての文字が同じ幅になり、それを使用してテキストを揃えたり、メモに ASCII アートを表示したりできます。

または、列にテキストを表示することをサポートする listview または stringgrid を使用することもできます。あなたの目的のために、これはおそらくより良いオプションです。

メモに固執する場合は、フォントの設定とは別に、コロンの前のすべての文字列を同じ幅にする必要があります。そのために単純なパディング関数を使用できます。SwissDelphiPagesに良い例があります:

function RightPad(S: string; Ch: Char; Len: Integer): string;
var
  RestLen: Integer;
begin
  Result  := S;
  RestLen := Len - Length(s);
  if RestLen < 1 then Exit;
  Result := StringOfChar(Ch, RestLen) + S;
end;

したがって、次のように使用できます。

Memo.Lines.Add(RightPad('some_string', ' ', 20) + ':' + some_string);
于 2014-05-06T21:12:56.430 に答える
0

最初に、「:」の前の文字列の最大長を知る必要があります。次に、「:」を個別にシフトするための処理を行う必要があります。この 2 回目の反復では、他の応答で前に示したアプローチの 1 つを使用します。

于 2014-05-07T08:15:46.393 に答える