Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.07.2015, 11:40
ник12331 ник12331 вне форума
Прохожий
 
Регистрация: 05.07.2015
Сообщения: 4
Версия Delphi: delphi 5
Репутация: 10
По умолчанию работа со списком

помогите плиз, вроде написал , а не работает. где ошибся? чего не хватает?

Каждая запись списка содержит пол, имя, возраст, рост, вес, а также требования к партнеру:

наименьший и наибольший возраст, наименьший и наибольший вес, наименьший и наибольший рост.

Объединить эти списки в список пар с учетом требований к партнерам без повторений.

ниже код кнопки, которая обрабатывает данное событие :
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,k:integer;
begin
j:=0; i:=0; k:=2;
for i:=1 to 4 do
for j:=5 to 10 do

if (stringgrid2.Cells[i,k]>=stringgrid1.Cells[i,j]) and
(stringgrid2.Cells[i,k]<=stringgrid1.Cells[i,j+1])
then k:=k+1; j:=j+2;
memo1.Lines.add(StringGrid1.Cells[0, i]+StringGrid2.Cells[0, i]);
i:=i+1 ;
//else
// i=i+1;
end;

end.
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 05.07.2015 в 18:11.
Ответить с цитированием
  #2  
Старый 05.07.2015, 18:58
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,k:integer;
begin
j:=0; i:=0; k:=2;
for i:=1 to 4 do
for j:=5 to 10 do
 
if (stringgrid2.Cells[i,k]>=stringgrid1.Cells[i,j]) and
(stringgrid2.Cells[i,k]<=stringgrid1.Cells[i,j+1])
then BEGIN 
k:=k+1; j:=j+2;
memo1.Lines.add(StringGrid1.Cells[0, i]+StringGrid2.Cells[0, i]);
i:=i+1 ;
//END else BEGIN
// i=i+1;
END;
end;
 
end.
Ответить с цитированием
  #3  
Старый 05.07.2015, 19:01
ник12331 ник12331 вне форума
Прохожий
 
Регистрация: 05.07.2015
Сообщения: 4
Версия Delphi: delphi 5
Репутация: 10
По умолчанию

[Error] Unit1.pas(80): Assignment to FOR-Loop variable 'j', вот ругается если добавляю begin end.
Ответить с цитированием
  #4  
Старый 05.07.2015, 21:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Ну ругается то не на begin, а на то что вы внутри цикла пытаетесь его счетчиком управлять. В данном случае нельзя трогать i,j. За их изменение циклы отвечают.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 05.07.2015, 21:07
ник12331 ник12331 вне форума
Прохожий
 
Регистрация: 05.07.2015
Сообщения: 4
Версия Delphi: delphi 5
Репутация: 10
По умолчанию

да я это понимаю, переделал вот так:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,k:integer;
begin
  j:=0; i:=0;   k:=2;
 for i:=1 to 4 do
 for j:=5 to 10 do      begin
 if  (stringgrid2.Cells[i,k]>=stringgrid1.Cells[i,j]) and
    (stringgrid2.Cells[i,k]<=stringgrid1.Cells[i,j+1])
  then begin k:=k+1;    end;       end;

  memo1.Lines.add(StringGrid1.Cells[0, i]+StringGrid2.Cells[0, i]);
  end;


end.
результата нет вообще.

Последний раз редактировалось lmikle, 05.07.2015 в 21:41.
Ответить с цитированием
  #6  
Старый 05.07.2015, 21:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

И еще один существенный момент. StringGrid работает с данными типа строка, а ваше сравнение предполагает работу с числом. Сравнение строк могут дать совсем не тот результат, что вы ожидаете.
Например: 11 > 2 = True , но '11' > '2' = False
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 05.07.2015, 21:17
ник12331 ник12331 вне форума
Прохожий
 
Регистрация: 05.07.2015
Сообщения: 4
Версия Delphi: delphi 5
Репутация: 10
По умолчанию

так??? подскажите как верно?
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,j,k:integer;
begin
  j:=0; i:=1;   k:=2;
 //for i:=1 to 4 do
 for j:=5 to 10 do      begin
 if  (strtoint(stringgrid2.Cells[i,k])>=strtoint(stringgrid1.Cells[i,j])) and
    (strtoint(stringgrid2.Cells[i,k])<=strtoint(stringgrid1.Cells[i,j+1]))
  then begin k:=k+1;    end;       end;

  memo1.Lines.add(StringGrid1.Cells[0, i]+StringGrid2.Cells[0, i]);
  end;


end.

lmikle: пользуемся тегами для оформления кода, иначе последуют санкции.

Последний раз редактировалось lmikle, 05.07.2015 в 21:42.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter