Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#4

AW: Tools API Delphi 2007 kompletten Source des aktuellen Editors auslesen

  Alt 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.
  Mit Zitat antworten Zitat