Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Множества и цикл for


Автор: Delphist 23.3.2006, 16:14
Наверное вопрос смешной (для первоклассниклов), но к сожеоению с множествами не работал уже давно и кое что подзабыл, а лазить в букварь нет времент.
Вопрос следующего характера:
Есть переменная GoodSymbols: set of Char = ['a', 'b', 'c', 'd', 'e', 'g']
Имеется ли у меня возможность прогнать множество в цикле от а до g.

И ещё один вопрос, как инициализировать динамический массив:

Код

var
  GoodSymbols: array[1..9] of Char = ('1', '2', '3', '4', '5', '6', '7', '8', '9');  {тут проблем нет}


Код

var
  GoodSymbols: array of Char = ('1', '2', '3', '4', '5', '6', '7', '8', '9'); {а тут проблемы} 

Автор: Alexeis 23.3.2006, 16:28
вот так можно
Код

var
  c : Char
For c := 'a' to 'z' do

Автор: Delphist 23.3.2006, 16:38
Цитата(alexeis1 @ 23.3.2006, 16:28)
вот так можно
Код

var
  c : Char
For c := 'a' to 'z' do

Этот трюк я знаю smile . Он перечисляет все буквы от 'a' до 'z', мне нужно перечислить в одном цикле такую последовател-ть:
q, g, z, 1, 6, &, 9, u, -, +, h

smile

Автор: bems 23.3.2006, 16:44
Цитата(Delphist @ 23.3.2006, 16:38 Найти цитируемый пост)
мне нужно перечислить в одном цикле такую последовател-ть:
q, g, z, 1, 6, &, 9, u, -, +, h
объяви множество как тип, и в цикле фор прогони с переменной-параметром цикла этого типа, так же как выше было для чара

Автор: Delphist 23.3.2006, 16:52
Цитата(bems @ 23.3.2006, 16:44)
Цитата(Delphist @  23.3.2006,  16:38 Найти цитируемый пост)
мне нужно перечислить в одном цикле такую последовател-ть:
q, g, z, 1, 6, &, 9, u, -, +, h
объяви множество как тип, и в цикле фор прогони с переменной-параметром цикла этого типа, так же как выше было для чара

Примерно как это будет выглядеть.

Автор: Alexeis 23.3.2006, 16:53
Никак
Цитата

The control variable of a for loop must have type Boolean, Char, WideChar, Integer, an enumerated type, or a subrange type.

Добавлено @ 16:56
Цитата

var
  GoodSymbols: array of Char = ('1', '2', '3', '4', '5', '6', '7', '8', '9');


так можно только в C++
В delphi надо делать ручками или статический массив

Автор: Snowy 23.3.2006, 17:10
Слушай, чем тебя банальный string не устраивает?
Код

const
  s = 'qgz16&9u-+h';
var
  i: integer;
begin
  for i := 1 to Length(s) do
    Caption := Caption + s[i];
end;

Автор: Delphist 23.3.2006, 17:14
Цитата(Snowy @ 23.3.2006, 17:10)
Слушай, чем тебя банальный string не устраивает?

String меня вполне устраивает, но хотелось бы знать как это можно сделать через множества.

Автор: Snowy 23.3.2006, 17:30
Через set of Char - никак.

Автор: Delphist 23.3.2006, 17:38
Цитата(Snowy @ 23.3.2006, 17:30)
Через set of Char - никак.

А ты сообщение bems прочитай он говорит, что можно.

Автор: Snowy 23.3.2006, 17:42
Так тем более не получится - множество не ординальный тип. Его нельзя использовать в качестве переменной цикла.

Ко множеству вообще применимы только операторы множества.
in, +, -, >, <, =
Это множество, а не массив.
Можно в него вставить, выкинуть...

Автор: Romikgy 23.3.2006, 17:43
Цитата(Delphist @ 23.3.2006, 15:14 Найти цитируемый пост)
Есть переменная GoodSymbols: set of Char = ['a', 'b', 'c', 'd', 'e', 'g']
Имеется ли у меня возможность прогнать множество в цикле от а до g.

Мож подойдет in ?
Цитата(Delphist @ 23.3.2006, 15:14 Найти цитируемый пост)
динамический массив

Код

zn: set of char;
begin
zn:=['+','-','*','/','^'];

end;

Автор: bems 23.3.2006, 17:54
Цитата(alexeis1 @ 23.3.2006, 16:53 Найти цитируемый пост)
Никак
ну да. не выспался я сегодня

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)