IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Множества, Проблема со Стрингридом
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: Anna

Репутация: -  0  +


Работа идет со множеством строчных латинских букв.Требуется реализовать всевозможные операции над множествами.Формировать САМО множество необходимо посредством СтрингГрида.
Но здесь возникает проблема!!!
допустим, 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 и т.д. dry.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Почему не удается выполнить действие

Потому, что Cells[i, j] - это строка, а не символ... Бери один символ (через Copy) - не будет никаких проблем...

Кроме этого используй Include для работы с множествами:
Include(a, Copy(cells[Col,Row], 1, 1));
должно сработать.

Переношу в раздел "Дельфи" ...

P.S. Извиняюсь, не так... Вот так:
Include(a, (StringGrid1.cells[0, 0])[1]);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: Anna

Репутация: -  0  +


Цитата(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;]);


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






if RadioButton1.Checked then begin include(a,(StringGrid1.cells[0,0])[1]);
Ну я же просто для примера проставил такие индексы... Ты должна заменить их на нужные тебе...

И потом, ты уверена, что второй способ добавления символа во множество (через Chr, как ты добавляешь в B) работает? Тогда почему в двух местах - два разных способа? Пользуйся одинаковым...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: Anna

Репутация: -  0  +


Я просто маленько напутала..Запускаю я вот это:

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;

Выбранный элемент множества в СтринГриде заносится в множество,собственно так оно и формируется, а отображение этого множества должно произойти в СтатикТексте, но этот самый СтатикТекст остается пустым
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






for i:=0 to 25 do ...
А что, собственно, ты хотела? Ни один печатный символ не имеет кодов меньше 26, может быть, там должно быть 255?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Женский
Реальное имя: Anna

Репутация: -  0  +


Цитата(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);


Спасибо огромное!!!!Сделала последнюю лабу!!!! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.09.2020 9:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name