一度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関数をはじめて使うので使い間違いしてるのではないかなと思い
質問しました。
お願いします。
>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;
ありがとうございます。
ぜんぜん違ってみたいですね(汗
早速ヘルプ読み直してみます。
ソースコードまでご丁寧にありがとうございます。
理解でき、動いたら改めて解決♪を押したいと思います。
ありがとうございました〜
速いレスありがとうございました。
何とか動きました。
ツイート | ![]() |