Home » Tipps & Tricks » Komponenten » TRichEdit/TMemo/TEdit » Wort aus einem String an einer Position extrahieren

Wort aus einem String an einer Position extrahieren

Folgende Funktion extrahiert das Wort, das sich an einer bestimmten Position befindet.Zu einem Wort gehören alle Zeichen, die diesem Set angehören:

const
  TWordSeperators: set of Char = ['A'..'Z', 'a'..'z', 'ö', 'Ö', 'Ä', 'ä', 'ü', 'Ü',
  'ß', '´', '', '@', ' _', '0'..'9'];

Als Parameter erwartet die Funktion zunächst den Text in Form eines String und die Position:

function GetSeperateWord(const AText: String; const APosition: Integer): String;
const
  TWordSeperators: set of Char = ['A'..'Z', 'a'..'z', 'ö', 'Ö', 'Ä', 'ä', 'ü', 'Ü', 'ß',
  '´', '', '@', ' _', '0'..'9'];
var
  iStart, iEnd: Integer;
begin
  if (AText  '') and (APosition > 0) and (APosition  0) and (AText[iStart] in TWordSeperators) do
      Dec(iStart);

    while (iEnd < Length(AText)+1) and (AText[iEnd] in TWordSeperators) do
      Inc(iEnd);

    Result := Copy(AText, iStart+1, iEnd-iStart-1);
  end
  else
    Result:='';
end;

Um das Wort an der Cursorposition eines Memo-Feldes zu extrahieren, können Sie die Funktion wie folgt aufrufen:

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Edit1.Text := GetSeperateWord(Memo1.Text, Memo1.SelStart);
end;