- 61 名前:デフォルトの名無しさん mailto:sage [2005/12/06(火) 00:46:30 ]
- >>59
惜しい。あと一歩。78点くらい。 たぶん結果は正しい。冗長なのが減点の原因。 AnsiStrPos は二バイト文字をサポートしていますので、検索の先頭を間違わなければStrByteType による確認は不要です。 それから、見つかったら、PStr は検索文字列の長さ分だけ Inc() してから再度検索します。 repeat PStr:=AnsiStrPos(PStr, sword); if (PStr<>nil) then begin Inc(cnt); Inc(PStr, Length(sword)); end; until PStr=nil; このようにすると検索文字列が 「Delphi」であっても「デルファイ」であっても問題なく検索できます。 >>59 の回答は検索文字列の最初が一バイト文字であることを仮定しているので正しくないです。 しかし、かなりな進歩で驚いています。 次のお題は、何回現れるかの他に、その位置も返すような関数をつくってください。具体的には、RichEdit に 同様にテキストを読み込んで、ボタンを押すと Delphi の部分が赤い文字列になるようにします。 赤文字にする方法、位置情報を返すための配列の定義の仕方など、分からないことがあったら個別に質問してください。
|

|