初めまして。
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;
> 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;
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;
jok様、通りすがり。様
ご指摘ありがとうございます。
StrScan()という関数があったのですね(^^;
ネットで調べてもinや集合について書いているところが少なくて
ようやくここにたどり着いて、質問させていただいた次第です。
通りすがり。様のコードを見ると
私どうやら集合の意味を間違っていたようで。
もっと勉強に励みます。
どうもありがとうございました。
一文字でしたら、ansiposも使えますね
> 一文字でしたら、ansiposも使えますね
二文字でも三文字でも使えますが。
一文字(Char)だから StrScan() や in が効率的なのでは?
ツイート | ![]() |