Помощь - Поиск - Пользователи - Календарь
Полная версия: Множества
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Nike0
Доброго времени суток, нужна небольшая помощь: у меня есть 9 эдитов, для пяти из них у меня есть условиеЮ, что можно записывать числа от 1 до 5 включительно и только 1 раз, вот эта процедура:
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
var
edit:TEdit;
b:integer;
begin
edit:= Sender as TEdit;
if (key = #8) and (edit.Text<>'') then
include(Number,StrToInt(edit.Text));
if not (Key in ['1'..'5',#8]) then
Key :=#0
else
begin
if key<>#8 then
b := StrToInt(Key);
if not (b in Number) and (key<>#8) then
Key := #0
else
if key<>#8 then
exclude(Number,b);
end;
end;

type
TNumber = Set of Byte;

procedure TForm2.FormCreate(Sender: TObject);
begin
Number := [1..5];
end;


но тут начинается самое интересное, я хотел сделать также и для 4 символов (+,-,*,/) в оставшиеся эдиты, но ничего толкового не получилось, прошу помочь разобраться с этой проблемкой
volvo
В чем проблема - непонятно, вот так все прекрасно работает:

type
TCharSet = Set Of Char;
var
Chars: TCharSet = ['+', '-', '*', '/']; // Можно это сделать и в FormCreate

procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: Char);
var
edit: TEdit;
b: Char;
begin
edit:= Sender as TEdit;
if (key = #8) and (edit.Text<>'') then
begin
include(Chars, AnsiChar(edit.Text[edit.SelStart]));
end;
if not (Key in ['+', '-', '*', '/', #8]) then
Key :=#0
else
begin
if key<>#8 then
b := Key;
if not (b in Chars) and (key<>#8) then
Key := #0
else
if key<>#8 then
exclude(Chars, AnsiChar(b));
end;
end;
Nike0
спасибо, у меня как раз ругалось на AnsiChar и TCaption
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.