Re: D2006 .NET RichEdit.FindText, SendMessage, PointerToInt
От: NSP Россия  
Дата: 06.09.06 22:38
Оценка:
Здравствуйте, maslan.

1. попробуйте заменить fnd := RichEdit1.FindText('!MATRIX!', fnd+1, Length(RichEdit1.Text), []);
на fnd := RichEdit1.FindText('!MATRIX!', fnd+1, Length(RichEdit1.Lines.Text), [stMatchCase]);
Должно работать

2. Зачем изобретать велосипед??
Если заглянуть в реализацию TCustomRichEdit.FindText,то можно увидеть то же самое,то есть что поиск реализован с помощью
SendMessage(Handle, EM_FINDTEXT, Flags, LongInt(@Find)) :

function TCustomRichEdit.FindText(const SearchStr: string;
  StartPos, Length: Integer; Options: TSearchTypes): Integer;
var
  Find: TFindText;
  Flags: Integer;
begin
  with Find.chrg do
  begin
    cpMin := StartPos;
    cpMax := cpMin + Length;
  end;
  Flags := 0;
  if stWholeWord in Options then Flags := Flags or FT_WHOLEWORD;
  if stMatchCase in Options then Flags := Flags or FT_MATCHCASE;
  Find.lpstrText := PChar(SearchStr);
  Result := SendMessage(Handle, EM_FINDTEXT, Flags, LongInt(@Find));
end;


Соответственно указатель передаётся так: LongInt(@Find)
На интересной работе и сны интересные видишь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.