Hallo,
kann hier wer mal drüber gucken, ob das irgendwie eleganter geht?
Ziel ist es in einem Memo die Zeilen, die selektiert sind mit "--" einzurücken bzw. "zurückzurücken". Dabei soll es egal sein, wo in einer Zeile die Selektion anfängt/aufhört.
Dies soll dem auskommentieren und einrücken mancher
IDE's nachempfunden sein.
Delphi-Quellcode:
procedure TSelector.acDecommentExecute(Sender: TObject);
var i:Integer;
begin
for i:=Startline to Endline do
if Pos('--',SelectMemo.Lines[i])=1 then
SelectMemo.Lines[i]:=Copy(SelectMemo.Lines[i],3,Length(SelectMemo.Lines[i]));
end;
procedure TSelector.acCommentExecute(Sender: TObject);
var i:Integer;
begin
for i:=Startline to Endline do
SelectMemo.Lines[i]:='--'+SelectMemo.Lines[i];
end;
function TSelector.Endline: Integer;
var
i,l:Integer;
endfound: Boolean;
begin
endfound := false;
l:=0;
Result:=0;
for i:=0 to SelectMemo.Lines.Count-1 do
begin
l:=l+Length(SelectMemo.Lines[i])+2;
if not endfound then
begin
if l>=SelectMemo.SelStart+SelectMemo.SelLength then
begin
endfound:=true;
result:=i;
end;
end;
end;
end;
function TSelector.Startline: Integer;
var
i,l:Integer;
startfound: Boolean;
begin
startfound := false;
l:=0;
Result:=0;
for i:=0 to SelectMemo.Lines.Count-1 do
begin
l:=l+Length(SelectMemo.Lines[i])+2;
if not startfound then
begin
if l>SelectMemo.SelStart then
begin
startfound:=true;
result:=i;
end;
end
end;
end;