procedure TFrmMain.ButtonSearchClick(Sender: TObject);
const
SearchStr : String = '';
SearchStart : Integer = 0;
begin
// heeft een geheugenlek... ???
if SearchStr <> EditSearchFormatedMemo.Text then begin
SearchStart := 0;
SearchStr := EditSearchFormatedMemo.Text;
end;
SearchStart := FindInMemo(MemoFormatted, SearchStr, SearchStart + 1);
if SearchStart > 0 then begin
Caption := 'Found at position[' + IntToStr(SearchStart) + ']!';
end
else begin
Caption := 'No further finds.';
end;
end;
function TFrmMain.FindInMemo(aMemo: TMemo; aString: String; StartPos: Integer
): Integer;
begin
// UpperCase. niet hoofdleter gevoelig voorlopig.
Result := PosEx(UpperCase(aString), UpperCase(aMemo.Text), StartPos);
//Result := PosEx(aString, aMemo.Text, StartPos);
if Result > 0 then begin
aMemo.SelStart := UTF8Length(PChar(aMemo.Text), Result -1);
aMemo.SelLength := Length(aString);
aMemo.SetFocus;
end;
end;