Работа идет со множеством строчных латинских букв.Требуется реализовать всевозможные операции над множествами.Формировать САМО множество необходимо посредством СтрингГрида. Но здесь возникает проблема!!! допустим, Litera=set of 'a'..'z'; a:Litera; Почему не удается выполнить действие a:=a+[cells[Col,Row]]? В cells[Col,Row] Col=25, Row=0. cells[0,0]=a cell[1,0]=b и т.д.
volvo
13.01.2007 1:46
Цитата
Почему не удается выполнить действие
Потому, что Cells[i, j] - это строка, а не символ... Бери один символ (через Copy) - не будет никаких проблем...
Кроме этого используй Include для работы с множествами:
Include(a, Copy(cells[Col,Row], 1, 1));
должно сработать.
Переношу в раздел "Дельфи" ...
P.S. Извиняюсь, не так... Вот так:
Include(a, (StringGrid1.cells[0, 0])[1]);
Anches
13.01.2007 3:04
Цитата(volvo @ 12.01.2007 21:46)
Потому, что Cells[i, j] - это строка, а не символ... Бери один символ (через Copy) - не будет никаких проблем...
Кроме этого используй Include для работы с множествами:
Include(a, Copy(cells[Col,Row], 1, 1));
должно сработать.
Переношу в раздел "Дельфи" ...
P.S. Извиняюсь, не так... Вот так:
Include(a, (StringGrid1.cells[0, 0])[1]);
Еще кое-что...Где-то ошибка..не отображается МНОЖЕСТВО,переведенное функцией SetToStr в строку, в StaticText1.Caption
function SetToStr(s:Litera):String; var i:integer; begin Result:=''; for i:=0 to 25 do if Chr(i) in s then Result:=Result+''+Chr(i+97); end; procedure TForm1.StringGrid1DblClick(Sender: TObject); begin with StringGrid1 do begin if RadioButton1.Checked then begin include(a,(StringGrid1.cells[0,0])[1]); StaticText1.Caption:=SetToStr(a) end; if RadioButton2.Checked then begin include(b,Chr(StrToInt(Cells[Col,Row]))); StaticText2.Caption:=SetToStr(b) end; end; end;]);
volvo
13.01.2007 3:46
if RadioButton1.Checked then begin include(a,(StringGrid1.cells[0,0])[1]);
Ну я же просто для примера проставил такие индексы... Ты должна заменить их на нужные тебе...
И потом, ты уверена, что второй способ добавления символа во множество (через Chr, как ты добавляешь в B) работает? Тогда почему в двух местах - два разных способа? Пользуйся одинаковым...
Anches
13.01.2007 4:04
Я просто маленько напутала..Запускаю я вот это:
procedure TForm1.StringGrid1DblClick(Sender: TObject); begin with StringGrid1 do begin if RadioButton1.Checked then begin include(a,(StringGrid1.cells[Col,Row])[1]); StaticText1.Caption:=SetToStr(a); end; if RadioButton2.Checked then begin include(b,(StringGrid1.cells[Col,Row])[1]); StaticText2.Caption:=SetToStr(b) end; end; end;
Выбранный элемент множества в СтринГриде заносится в множество,собственно так оно и формируется, а отображение этого множества должно произойти в СтатикТексте, но этот самый СтатикТекст остается пустым
volvo
13.01.2007 4:08
for i:=0 to 25 do ...
А что, собственно, ты хотела? Ни один печатный символ не имеет кодов меньше 26, может быть, там должно быть 255?
Anches
13.01.2007 4:24
Цитата(volvo @ 13.01.2007 0:08)
for i:=0 to 25 do ...
А что, собственно, ты хотела? Ни один печатный символ не имеет кодов меньше 26, может быть, там должно быть 255?
Конечно же! Только
if Chr(i+97) in s then Result:=Result+''+Chr(i+97);
Спасибо огромное!!!!Сделала последнюю лабу!!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.