(Gast)
n/a Beiträge
|
AW: Tools API Delphi 2007 kompletten Source des aktuellen Editors auslesen
13. Jun 2013, 12:01
Hallo,
unter Delphi 7 bekommt man den markierten Text oder den Text ab Cursorposition bis zum ersten Zeichen, welches kein Buchstabe ist, hiermit:
Delphi-Quellcode:
{ Text von der aktuellen Position im Editor holen.
~result Text an der Cursorposition }
function TWebSearchMenu.GetTopBufferText : String;
Var
sText : String;
ch : Char;
bOk : Boolean;
i : Integer;
begin
// markierten Text aus dem Editor holen.
sText := EditorServices.TopBuffer.EditBlock.Text;
// Ist kein Text markiert?
If sText = '' Then Begin
with EditorServices.TopBuffer.EditPosition do begin
Repeat
// Ein Zeichen nach links gehen
bOk := Move(Row, Column - 1);
// Hat das funktioniert?
If bOk then begin
// Zeichen lesen
ch := Read(1)[1];
// Ist es ein Buchstabe?
Case ch Of
'A'..'Z','a'..'z','.' : ; // bOk := True;
else
// Nein, dann Schalter für Schleifenabbruch setzen.
bOk := false;
End;
end;
Until not bOk;
// Mit dem Cursor ein Zeichen nach rechts,
// wenns kein Buchstabe oder Punkt ist
Case Read(1)[1] Of
'A'..'Z','a'..'z','.' :;
else
Move(Row, Column + 1);
end;
// und dann die nächsten 100 Zeichen
sText := Trim(Read(100));
i := 1;
bOK := False;
// Das erste Zeichen suchen, das kein Buchstabe ist bzw. kein Punkt.
Repeat
Case sText[i] Of
'A'..'Z','a'..'z','.' :;
else
bOk := True;
end;
Inc(i);
Until (i >= Length(sText)) Or bOk;
// Das wird unser Suchbegriff
sText := Copy(sText,1,i - 2);
end;
// Ein eventuell vorhandenes Semikolon wird entfernt.
sText := AnsiReplaceText(sText,';',' ');
sText := Trim(sText);
i := Pos(' ',sText);
If i > 0 Then sText := Copy(sText,1,i - 1);
end;
Result := sText;
end;
Eventuell hilft's Dir ja weiter.
|
|
Zitat
|