And,Or をstring型で使うには?

解決


KK  2003-08-23 02:42:14  No: 4462  IP: 192.*.*.*

EXEファイルにD&Dされたファイルの拡張子を判別するために、

If ExtractFileExt(ParamStr(1)) = ".jpg" And ".jpeg" then
....

としたいのですが、どうやらAndやOrはString型では使えないらしく、エラーになります。String型でAndやOrと同じことをするには、どうすればよいでしょうか?

編集 削除
KK  2003-08-23 02:44:01  No: 4463  IP: 192.*.*.*

修正です。
""は''の間違いです。

編集 削除
たかみちえ  URL  2003-08-23 06:47:07  No: 4464  IP: 192.*.*.*

二つの条件は別々のものとして扱われます。
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
という文にまとめられます。
どうも挙動がおかしい(実際に動くときに問題があるわけではなく、コンパイル時に文句が多い…)ですけど。

編集 削除
にしの  2003-08-23 09:15:10  No: 4465  IP: 192.*.*.*

たしか、=よりもAndの方が優先度が高かったと思います。
なので、

If (ExtractFileExt(ParamStr(1)) = '.jpg') Or (ExtractFileExt(ParamStr(1)) = '.jpeg') then
ですね。
ちなみに、OrでなくAndだと絶対に通りません。

編集 削除
たかみちえ  URL  2003-08-23 10:11:25  No: 4466  IP: 192.*.*.*

ああ、そうでした。ごめんなさいm(__)m
にしのさんの言うとおりです。

編集 削除
KK  2003-08-23 20:11:22  No: 4467  IP: 192.*.*.*

ありがとうございました。
ぜひ今から試してみます。

編集 削除