ツ ツ ツ
var
I: Integer;
S1,S2: String;
begin
S1 := '';
S2 := Memo1.SelText;
while S1 <> S2 do
begin
S1 := S2;
S2 := StringReplace(S1,#13#10#13#10,#13#10,[rfReplaceAll]);
end;
Memo1.SelText := S2;
マウスで選択した範囲の行内の空白行を削除したいのですが、
テキスト全体ですと下記でよいのだと思いますが、
Memo1.text:=StringReplace(s,#13#10#13#10,#13#10,[rfReplaceAll]);
選択範囲内の場合は、
For i:= ASelStart to ASelEnd do //選択範囲開始〜範囲終了まで
Memo1.Lines[i]:=〜〜〜 ←ここの部分の処理方法が判らず困っています
一行一行確認をする為に、前後に改行があるかどうかが不明と
なってしまいますし、この処理だと処理速度が遅くなりそうですね。
それとも、選択部分を一旦、変数に代入して全体置換した方が良いのかと
思いますが、その場合、選択部分の置換後のテキストと元のテキストの
合体のさせ方が判りません。
要約しますと以下の2点お教えていただけますでしょうか?
①一行一行確認をしながら空白改行を削除する方法
②選択範囲を一旦別の変数に代入後、一括置換し、元に戻す方法
よろしくお願い致します。
for I := ASelEnd downto ASelStart do
begin
if Memo1.Lines[I] = '' then
begin
Memo1.Lines.Delete(I);
end;
end;
処理速度が気になる場合は全体を
Memo1.Lines.BeginUpdate;
try
...
finally
Memo1.Lines.EndUpdate;
end;
で囲めばOK。
ということではなく?
通りすがりさん
ヲサヲサヲサヲサヘアョフロノンヲサスヲサァァヲサヲサ
ヲサヲサヲサヲサヲサヲサヘアョフョトィノゥサヲサ
大変シンプルに実現出来たのですね。なるほど。
ありがとうございました!
ウウエカイウカキさん
貴重なコードをありがとうございました。
こんなにシンプルに選択部分を置換して処理できるのですね。
おかげさまでスマートに解決できました!