Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как в Delphi из строки (string) получить множество чисел (set of 0..255)?

- Алексей - Ученик (245), на голосовании 12 лет назад
Вопрос к тем кто хорошо понимает что такое множество в делфи и чем оно отличается от массива. Множество чисел мне необходимо для сравнения в условном операторе. Из строки (edit1.text) необходимо выделить цифры (порядковые номера строк в Listbox) и засунуть их в множество чисел (в квадратных скобках через запятую).
что имеется:

procedure *** (Sender: TObject)
type
TNumbers = set of 0..255;
var
Numbers: TNumbers;
begin
Numbers:= []; //пустое множество
Numbers:= [strtoint(edit1.text[1]), strtoint(edit1.text[4]), strtoint(edit1.text[7])]; //тут я присваиваю по одному символу из строки (первый, четвертый, седьмой) - получается что эти цифры которые стоят на названных позициях в строке и есть элементы множества - вроде все нормально - но двузначные числа так не присвоить, и тем более я не знаю сколько у меня будет таких случайных чисел в строке и где они будут стоять. Потому прошу у вас помощи как можно автоматизировать этот процесс и снять жесткую фиксацию элементов по количеству и положению в строке.
Дополнен 12 лет назад
Причем к существующему множеству нельзя взять и добавить новый элемент! ЕГо можно только полностью переписать.

ПРИМЕР:
Numbers:= [strtoint(edit1.text[1]), strtoint(edit1.text[4]), strtoint(edit1.text[7])];
Numbers:= [strtoint(edit1.text[8])];

во множестве останется только число которое стоит на восьмой позиции, а числа с первой, четвертой и седьмой сотруться
Дополнен 12 лет назад
надо писать так

Numbers:= [strtoint(edit1.text[1]), strtoint(edit1.text[4]), strtoint(edit1.text[7])];
Numbers3:=Numbers+[strtoint(edit1.text[8])];

тогда множество дополняется
Голосование за лучший ответ
Черкасов Максим Мастер (1558) 12 лет назад
Если числа в строке разделены пробелами, то используй функции для работы со строками copy, pos и delete. Сначала получаешь позицию пробела в строке, потом копируеш все до него - это будет число, потом конвертируешь и добавляешь в множество, потом удаляешь из строки все до пробела включительно. Делаешь в цикле пока в строке есть пробелы.

число: =StrToInt(copy(строка, 1,pos(' ',строка) -1));
delete(строка, 1,pos(' ',строка) +1);
Похожие вопросы