Во-первых, я не очень опытный программист. Я использую Delphi 2009 и работаю с наборами, которые мне кажутся очень странными и даже непоследовательными. Полагаю, это мог быть я, но следующее выглядит так, будто что-то явно не так:
unit test;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
test: set of 1..2;
end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
test := [3];
if 3 in test then
Edit1.Text := '3';
end;
end.
Если вы запустите программу и нажмете кнопку, то, конечно же, она отобразит строку «3» в текстовом поле. Однако, если вы попробуете то же самое с числом вроде 100, ничего не будет отображаться (как должно, на мой взгляд). Я что-то упускаю или это какая-то ошибка? Совет будет признателен!
РЕДАКТИРОВАТЬ: Пока что, похоже, я не одинок со своими наблюдениями. Если кто-то знает об этом изнутри, я буду очень рад услышать об этом. Кроме того, если есть люди с Delphi 2010 (или даже Delphi XE), я был бы признателен, если бы вы могли провести некоторые тесты этого или даже общего поведения набора (например, «test: set of 256..257»), как это было бы будет интересно узнать, изменилось ли что-нибудь в новых версиях.