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

解決


  2004-05-26 03:00:48  No: 9128

初めまして。
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

> 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

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

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

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

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

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


るるとん@K  2004-05-26 04:58:58  No: 9132

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


  2004-05-26 05:59:21  No: 9133

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加