FDELPHI 6 /RE:35801 RE:StringList の IndexOf  みなさん、こんにちは。 お陰様で、方向性が定まりました。 もともとは、その文字列があるかどうかのチェックしかしていないコードだった んです。だから、IndexOf で事足りていました。 ところが、ちょっと凝ったことをやらせようと思った時に、このような基本的な 事が身に付いていないために、どっちに進んでいいのかわからなくなってしまっ たのですね。 夕鶴 さん: 》 でも IndexOf のばあいは、一致文字列が見つかるとその 》Indexをかえして探索を止めてしまうので、複数の一致文字列 そう、途中で止めてしまうというのはわかるのですが、それが 0 から探し始めて いるのか、それとも Count-1 から探し始めているのかわからない、もしそれがわ かれば、横着して自分はその続きから探し始めればいいのではないか、と考えた のです。 現在のコードでは、少なくとも1回は IndexOf で存在判定を行っております。 もし、存在判定の IndexOf で 2 という値が帰ってきた時、もう一度自力で何番 目か判定に行くのは間抜けなような気がしたのです。 また、同じ値が複数含まれているかチェックするとしても、すでに Count - 1 か ら Downto で全部なめてきた結果であれば、あと2回比較すれば終りなわけなの ですから、それをまた 0 から最後まで比較するのも気がひける、ということで、 仕様というか定義というか、そういうものをお尋ねした次第です。 》 さがす回数が多いのなら、リストをソートしておいてFindで 》サーチして一致するものがあれば、その前後を重複文字列がな 》いかさがすというのはどうでしょうか? 存在判定から自力でやるなら、たぶんこの方法が一番という事になるのでしょう けれど、その場合、IndexOf の存在理由(^^; が問われてしまうようなコーディン グになっておりますので、挑戦するのは「いつかそのうち」というパターンにな りそうな気がしています。 十兵衛 さん: 》こんな感じでテストしてみれば如何でしょう? らせん企画 さん: 》 ちなみにこのようなことは一度実行してみると良いです。 はい、テストした結果は明らかにこうなっているんだけど・・・といった感じで、 それを信じて、IndexOf では Downto は使っていない、という信念のもと、現在 の手元のソースは組まれています。ただ、それの根拠というか、仕様がどこにも 書かれていない、という所に一抹の不安があったわけです。 実はある特定の時、2E+32回に1回だけ Downto を使ってループを回しています、 とか言われてしまうと、私の組んだロジックが崩壊してしまうので。 で、先日もD1のVCLのソースがどうした、といった話が合ったようなので、 テストの結果ではなく、ソースを見て議論のできる人がこちらにはいらっしゃる かな、と期待して質問を投げさせていただいた次第です。 らせん企画 さん: 》ではありませんので途中からの IndexOf はできません。 途中からは手作業で検索する事はできるようですので、途中までの IndexOf がで きればOKです。でもって、IndexOf が返してくる値というのは、その文字列が 見つかった一番小さい Index の値だという事がわかりましたので、私の今回の問 題解決には大変役に立ちました。どうもありがとうございました。                                 としき