RichEditに入力された文字列が、指定された要素の中に含まれていたら
イベントが起きるという事をしたく下記のようなプログラムを組んだのですが、
[エラー] main.pas(726): E2001 順序型が必要です
というエラーがでました。どのようにしたらよいのでしょうか?
var
stringset:set of String;
begin
stringset:=['abc','def','gef'];
if RichEdit1.SelText in stringset then
begin
end;
end;
>stringset:set of String
これ自体無効です。
Set Of XXXX;
これは集合型の宣言ですので、列挙型か、Byte、Char、Booleanのみ
有効です。
当然、列挙型でも上記のような判断には使えません。
別の方法で判断するようにした方が良いでしょう。
御丁寧に教えていただきありがとうございます!!
別の方法を試してみます。
チェック入れるの忘れてました(笑)
TStringList の IndexOf() メソッドは二分探索で高速です。これを利用できませんか?
procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStringList;
begin
sl := TStringList.Create;
try
sl.Add('abc');
sl.Add('def');
sl.Add('gef');
if sl.IndexOf(Edit1.Text) <> -1 then
begin
Label1.Caption := 'Include';
end
else
begin
Label1.Caption := 'Not include';
end;
finally
sl.Free;
end;
end;
横から失礼
>TStringList の IndexOf() メソッドは二分探索で高速です
TStringListのSortedがTrueなら二分探索ですが(内部でFindを呼び出している)、Falseなら順次検索となります。
> TStringListのSortedがTrueなら二分探索ですが
おう、そうでした。
sl.Sorted := true;
を忘れました。ご指摘ありがとうございます。
ツイート | ![]() |