EXEファイルにD&Dされたファイルの拡張子を判別するために、
If ExtractFileExt(ParamStr(1)) = ".jpg" And ".jpeg" then
....
としたいのですが、どうやらAndやOrはString型では使えないらしく、エラーになります。String型でAndやOrと同じことをするには、どうすればよいでしょうか?
修正です。
""は''の間違いです。
二つの条件は別々のものとして扱われます。
If ExtractFileExt(ParamStr(1)) = ".jpg" And ".jpeg" then
ではなく
If ExtractFileExt(ParamStr(1)) = ".jpg" And ExtractFileExt(ParamStr(1)) = ".jpeg" then
としてあげてください(ちょっと面倒ですけど)
ところで上記の式は絶対にtrueにならないような気がしますけど…。
ちなみにorはわたしが作っているユニット、stdStringsにあるifor関数が使えます。
この関数を使えば、
If ExtractFileExt(ParamStr(1)) = ".jpg" or ExtractFileExt(ParamStr(1)) = ".jpeg" then
という文を、
If ifor(ExtractFileExt(ParamStr(1)), ".jpg", ".jpeg") then
という文にまとめられます。
どうも挙動がおかしい(実際に動くときに問題があるわけではなく、コンパイル時に文句が多い…)ですけど。
たしか、=よりもAndの方が優先度が高かったと思います。
なので、
If (ExtractFileExt(ParamStr(1)) = '.jpg') Or (ExtractFileExt(ParamStr(1)) = '.jpeg') then
ですね。
ちなみに、OrでなくAndだと絶対に通りません。
ああ、そうでした。ごめんなさいm(__)m
にしのさんの言うとおりです。
ありがとうございました。
ぜひ今から試してみます。
ツイート | ![]() |