Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: PosEx gibt immer 0 ( Null ) zurück

  Alt 26. Mär 2009, 16:07
PosEx hat zumindest bis Delphi 5 durchaus mit Paramter 0 als Index funktioniert, wurde in einer späteren Delphiversion verändert.

Im zweiten Beispiel von himitsu wird i mit 1 initialisiert, muss an dieser Stelle richtig 0 sein (gesucht wird ab i + 1).

Hier noch meine (hübschere ) Variante:
Delphi-Quellcode:
function Markiere(ARichedit: TRichEdit; AText: String; AColor: TColor): Boolean;
{---}
  function FindNext(const AValue, AText: String; var AIndex: Integer): Boolean; inline;
  begin
    AIndex := PosEx(AValue, AText, AIndex);
    Result := (AIndex > 0);
  end;
{---}
var
  s: String;
  i: Integer;
begin
  Result := False;
  s := ARichEdit.Text;
  i := 1;
  while FindNext(AText, s, i) do
  begin
    ARichEdit.SelStart := i - 1;
    ARichEdit.SelLength := Length(AText);
    ARichEdit.SelAttributes.Color := AColor;
    Inc(i, Length(AText));
    Result := True;
  end;
end;

if Markiere(Richedit1, 'mit', clRed) then
  ShowMessage('gefunden');
  Mit Zitat antworten Zitat