単語検索法について

解決


初心者  2005-03-05 12:34:14  No: 13561

一度HTMLをリッチテキストに書き出して、その中に探したい単語が
いくつあるかボタンを押したら検索される、というものを作っていました。
Edit2に検索単語をいれ、Edit3に個数が出るよう作ったつもりです。
procedure TForm2.Button3Click(Sender: TObject);
var
kazu: Integer;
begin
 kazu := AnsiPos(Edit2.Text, RichEdit2.Text);

 Edit3.Text := IntToStr(kazu);
end;
と書いて実行したら1〜2個しかない単語が10570とでました。
AnsiPos関数をはじめて使うので使い間違いしてるのではないかなと思い
質問しました。
お願いします。


「初心者」は名前にあらず  2005-03-05 14:00:44  No: 13562

>AnsiPos関数をはじめて使うので使い間違いしてるのではないかなと思い
その通り。ヘルプで戻り値を確認すべし。

var
 kazu: Integer = 0;
 pPos: PChar = nil;

procedure TForm2.Button3Click(Sender: TObject);
var
 buf: PChar;
begin
 GetMem(buf, Length(RichEdit2.Text)+1);
 try
  StrPCopy(buf, RichEdit2.Text);
  if pPos = nil then begin
   kazu := 0;
   pPos := buf;
  end;
  pPos := AnsiStrPos(pPos, PChar(Edit2.Text));
  if pPos <> nil then begin
   RichEdit2.SelStart := pPos - buf;
   RichEdit2.SelLength := Length(Edit2.Text);
   Richedit2.Perform(EM_SCROLLCARET, 0, 0);
   inc(pPos, Length(Edit2.Text));
   inc(kazu);
   Edit3.Text := IntToStr(kazu)+'個目';
  end else begin
   Edit3.Text := '全部で'+IntToStr(kazu)+'個';
  end;
 finally
  FreeMem(buf);
 end;
end;


初心者  2005-03-05 15:00:35  No: 13563

ありがとうございます。
ぜんぜん違ってみたいですね(汗
早速ヘルプ読み直してみます。
ソースコードまでご丁寧にありがとうございます。
理解でき、動いたら改めて解決♪を押したいと思います。
ありがとうございました〜


初心者  2005-03-05 16:21:58  No: 13564

速いレスありがとうございました。
何とか動きました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加