Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2011, 11:22   #1
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию сравнение листбоксво делфи

народ есть вот такой кусок программы

надо сравнивать построчно содержимое боксов координат Z
но предварительно сравнить X и Y
надо что б X Y Z из первого при одинаковых индексах сравнивалось с такми же индексами из дополнительного, как сделать такое большое сравнение в одном цикле?
SonicBob вне форума Ответить с цитированием
Старый 18.07.2011, 00:03   #2
derElektroBesen
Пользователь
 
Регистрация: 17.07.2011
Сообщений: 24
По умолчанию

А в чем то собственно проблема? Если необходимо, можно и под один иф запихать под сто условий))) Я конечно не говорю, что так делать нужно, но) Если других идей нет, то почему нет.
В общем если я понял вопрос, и Вас интересует просто, можно ли тучу условий положить в один цикл, то могу только сказать, что если не видно в дали иных решений, то действуйте в лоб.
derElektroBesen вне форума Ответить с цитированием
Старый 18.07.2011, 07:22   #3
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
Радость

Цитата:
Сообщение от SonicBob Посмотреть сообщение
народ есть вот такой кусок программы

надо сравнивать построчно содержимое боксов координат Z
но предварительно сравнить X и Y
надо что б X Y Z из первого при одинаковых индексах сравнивалось с такми же индексами из дополнительного, как сделать такое большое сравнение в одном цикле?

Код:
var x:integer;
begin
for X:=0 to form1.ComponentCount-1 do
  if form1.Components[x].ClassType=TListBox then begin
     if TlistBox(form1.Components[x]).ItemIndex=2 then

  end;
end;
перебор всех листбуксов
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 30.07.2011, 10:33   #4
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

Код:
var
Count1,Count11,i,k: Integer;
lx1,lx2,ly1,ly2,lz1,lz2,sr:real;

begin
if listbox2.Items.count=0 then showmessage('íåò èñõîäíûõ äàííûõ èëè íåáûëî ïðîèçâåäåíî ðàçäåëåíèå ïî ñòîëáàöàì');
if listbox11.Items.count=0 then showmessage('íåò äàííûõ ëÿ ñðàâíåíèÿ');
for i:=0 to ListBox2.Items.count-1 do
 Count1:=ListBox1.Items.Count;
 Count11:=ListBox11.Items.Count;  //ïðîâåðÿåì îäèíàêîâîå ëè êîëè÷åñòâî ñòðîê â áîêñàõ
 If Count1-Count11=0 then
   begin
   for i:=0 to ListBox2.Items.count-1 do
   lx1:=strtofloat(ListBox2.Items.strings[i]);
   for k:=0 to ListBox12.Items.count-1 do         //ïðîâåðÿåì íà îäèíàêîâîñòü êîîðäèíàòû Õ
   lx2:=strtofloat(ListBox12.Items.strings[k]);
   if lx1-lx2=0 then
          begin
          for i:=0 to ListBox3.Items.count-1 do
          ly1:=strtofloat(ListBox3.Items.strings[i]);
          for k:=0 to ListBox13.Items.count-1 do         //ïðîâåðÿåì íà îäèíàêîâîñòü êîîðäèíàòû Y
          ly2:=strtofloat(ListBox13.Items.strings[k]);
          if ly1-ly2=0 then
                     begin
                     for i:=0 to ListBox4.Items.count-1 do              //ïðîâåðÿåì íà îäèíàêîâîñòü êîîðäèíàòû Z. Óðà äîáðàëèñü
                     ly1:=strtofloat(ListBox4.Items.strings[i]);
                     for k:=0 to ListBox14.Items.count-1 do
                     ly2:=strtofloat(ListBox14.Items.strings[k]);
                     sr:=ly1-ly2;
                     ListBox19.Items.Add(floattostr(sr))
                     end
          else
          showmessage('Íå ñîîòâåòñâèå êîîðäèíàò Y (áëîêè ñäâèíóòû)')  //íå îäèíàêîâûå êîîðäèíàòû Y = ïðåðûâàíèå
          end
   else
   showmessage('Íå ñîîòâåòñâèå êîîðäèíàò X (áëîêè ñäâèíóòû)')    //íå îäèíàêîâûå êîîðäèíàòû Õ = ïðåðûâàíèå
   end
 else
 showmessage('êîëè÷åñòâî ñòðîê íå îäèíàêîâîå íàäî óðàâíÿòü');  //åñëè íå îäèíàêîâîå êîëè÷åñòâî ñòðîê - îáðûâàíèå
end;
сделал так но почему цикл не хочет в начало добавляется просто все на первой строке обрывается,
Код:
var x:integer;
begin
for X:=0 to form1.ComponentCount-1 do
  if form1.Components[x].ClassType=TListBox then begin
     if TlistBox(form1.Components[x]).ItemIndex=2 then

  end;
end;
а как к такому прикрутить проверку ? что то я не доконца понимаю принцип работы

почему это вешает комп?

Последний раз редактировалось Stilet; 31.07.2011 в 19:29.
SonicBob вне форума Ответить с цитированием
Старый 31.07.2011, 08:05   #5
denisbrain
Форумчанин
 
Регистрация: 29.05.2011
Сообщений: 449
Радость

сделал так но почему цикл не хочет в начало добавляется просто все на первой строке обрывается,
Код:
var x:integer;
begin
for X:=0 to form1.ComponentCount-1 do
  if form1.Components[x].ClassType=TListBox then begin
     if TlistBox(form1.Components[x]).ItemIndex=2 then

  end;
end;
а как к такому прикрутить проверку ? что то я не доконца понимаю принцип работы[/QUOTE]

можешь в аську написать лучше сегодня в Воскресенье, или в понедельник после 15-00 мска
задания на pascal/delphi ICQ 368254335
Tel +79177425326 mail denis-naymov1985(at)mail.ru login skype denis.new.skype
denisbrain вне форума Ответить с цитированием
Старый 31.07.2011, 16:45   #6
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

из 100+ просмотров че никто не мог обьеснить почему выше описанный код вешает комп? когда обрабатывается больше 5000 строк?
SonicBob вне форума Ответить с цитированием
Старый 31.07.2011, 16:58   #7
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

прямо таки комп? или программу?)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 31.07.2011, 19:31   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
че никто не мог обьеснить почему выше описанный код вешает комп?
Наверное потому что циклов слишком много.
Обьясни зачем тебе нужны эти сравнения.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.08.2011, 16:00   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,544
По умолчанию

Цитата:
Код:
   for i:=0 to ListBox2.Items.count-1 do
   lx1:=strtofloat(ListBox2.Items.strings[i]);
   for k:=0 to ListBox12.Items.count-1 do         //ïðîâåðÿåì íà îäèíàêîâîñòü êîîðäèíàòû Õ
   lx2:=strtofloat(ListBox12.Items.strings[k]);
   if lx1-lx2=0 then
ни один из операторов for не имеет операторных скобок (begin end) Значит:
в циклы включен ТОЛЬКО один оператор
анализ происходит ПОСЛЕ циклов.
в анализе участвуют только ПОСЛЕДНИЕ в в списке.
далее аналогично.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.08.2011, 16:43   #10
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

Цитата:
Сообщение от Zer0 Посмотреть сообщение
прямо таки комп? или программу?)
да ты прав только прогу просто уже бесило что не могу понять причину
Цитата:
Сообщение от Stilet Посмотреть сообщение
Обьясни зачем тебе нужны эти сравнения.
даны 2 пачки координат, надо произвести сравнение высот изменение высот со временем, но для того что б адекватно сравнить изменение высот со временем мне надо произвести сравнение координат X и Y если X Y из разных пачек совпадают то идёт сравнение высот, вот ради этого все и задумано.
SonicBob вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение в Excel whiteguru Microsoft Office Excel 3 06.07.2010 11:23
сравнение slavsmo Microsoft Office Excel 2 05.04.2010 17:51
C# сравнение слов Bobrik Помощь студентам 4 18.05.2009 17:57
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
Сравнение с таблицей Sanek777 Общие вопросы Delphi 0 26.09.2008 00:04