集合型のin演算子について

解決


 2004-05-26 03:00:48  No: 9128  IP: [192.*.*.*]

初めまして。
Delphiを使い始めて2週間の素人です。
集合型のin演算子について質問です。

以下のプログラムをコンパイルするとif文で引っかかり、
「この型には指定した演算子は使えません」
というエラーが出て実行できません。
どう直したらよいのでしょう??ご指摘よろしくお願いします。
環境は Delphi6 Personal / win2000 です。


procedure TForm1.Button1Click(Sender: TObject);
var
  c: Char;
  str: Array[0..6] of Char;
begin
  str := 'abcdfgh';
  c := 'a';
  if (c in list) then Edit1.Text := 'OK!';
end;

編集    削除
jok  2004-05-26 03:22:52  No: 9129  IP: [192.*.*.*]

> if (c in list) then Edit1.Text := 'OK!';

list ってなんですか? str も使われていませんし。

こんな感じなのでは。

procedure TForm1.Button2Click(Sender: TObject);
var
  c: Char;
  str: string;
begin
  str := 'abcdfgh';
  c := 'a';
  if StrScan(PChar(str),c) <> nil then Edit1.Text := 'OK!';
end;

編集    削除
通りすがり。  2004-05-26 03:37:21  No: 9130  IP: [192.*.*.*]

procedure TForm1.Button3Click(Sender: TObject);
var
  c: Char;
  str: set of 'a'..'z';
begin
  str := ['h','b','a','f','g','c','d'];
  c := 'a';
//c := 'e';
  if (c in str) then Edit1.Text := 'OK!'
                else Edit1.Text := 'NG?';
end;

編集    削除
 2004-05-26 03:43:42  No: 9131  IP: [192.*.*.*]

jok様、通りすがり。様
ご指摘ありがとうございます。

StrScan()という関数があったのですね(^^;
ネットで調べてもinや集合について書いているところが少なくて
ようやくここにたどり着いて、質問させていただいた次第です。

通りすがり。様のコードを見ると
私どうやら集合の意味を間違っていたようで。

もっと勉強に励みます。
どうもありがとうございました。

編集    削除
るるとん@K  2004-05-26 04:58:58  No: 9132  IP: [192.*.*.*]

一文字でしたら、ansiposも使えますね

編集    削除
 2004-05-26 05:59:21  No: 9133  IP: [192.*.*.*]

> 一文字でしたら、ansiposも使えますね

二文字でも三文字でも使えますが。
一文字(Char)だから StrScan() や in が効率的なのでは?

編集    削除