![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 25.08.2010
Сообщений: 62
|
![]()
Пытаюсь организовать цикл
на форме четыре Edit-a и комбобокс. При выборе комбобокса эти едиты последовательно опрашиваются, и если значение в очередном едите=0, то переменная "а" увеличивается на единицу. Буксует на строчке, где упоминается очередной едит[i].Подскажите, пожалуйста, как пишется команда для перебора этих окошек? Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
1) абсолютно непонятно, что такое edt[i] ?!
У Вас есть массив, куда Вы заносите все нужные Edit'ы ? Или что? 2) абсолютно непонятно, что Вы вкладываете в понятие "очередной едит" ? Очередной, это тот, на который переходит фокус с текущего эдита(по табуляции? 3) нельзя сравнивать переменную Text с нулём - обычно эта переменная типа String; 4) есть несколько подходов. a) завести массив объектов и перебирать их по массиву b) находить их по именам (если имена эдитов подчиняются какому-то регулярному закону.) например, Код:
Код:
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 25.08.2010
Сообщений: 62
|
![]()
1. Edt[i] - это Edit1 при первом витке цикла(i=1), Edit2 - при втором, когда i=2 и т.д.
просто у меня оно пишется почему-то не Edit, а Edt. То ли настройки какие-то, то ли ещё что... 3. а если переменную в едите перевести в ноль?: edt1.Text:=IntToStr(0); тут вот в чём проблема. После then он буксует. как видите познания мои в дельфи на уровне.... (в каком там классе начинают программирование изучать?)-1 класса. Код:
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
1) как сравнивали text с нулём, так и сравниваете
![]() 2) зачем выкинули из моего примера проверку на то, что компонент через FindComponent успешно найден ? 3) примерно так: Код:
Поэтому, если назовёте какой-нибудь компонент (например, кнопку, именем edt1) получите Access Vioaltion... Последний раз редактировалось Serge_Bliznykov; 13.02.2011 в 23:46. |
![]() |
![]() |
![]() |
#5 | ||
DelphiProger
Участник клуба
Регистрация: 14.11.2010
Сообщений: 1,023
|
![]() Цитата:
Код:
может где то в создании формы есть? Цитата:
j:= cbb1.ItemIndex; разве цикл не должен происходить столько раз сколько на нем едитов? или я что то не так понял?
VirusN13
Последний раз редактировалось ArtGrek; 13.02.2011 в 22:34. |
||
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ArtGrek
спасибо. вот что значит копировать не свой текст, а чужой. Просмотрел этот баг! (сейчас исправлю в примере...) |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 25.08.2010
Сообщений: 62
|
![]()
спасибо за советы, закрутился на несколько дней, сейчас буду пробовать.
в общих чертах суть задачи такова: это калькулятор для просчёта дверей в шкафу-купе. дверь может быть полноформатная, 2х-фрагментная, 3х-фрагментная, и 4х-фрагментная, за это отвечает За это отвечает ItemIndex (j) у Cbb1. Соответственно этому итеминдексу и выставляется счётчик циклов. Затем в цикле опрашивается содержимое Едита, и если оно равно нулю - переменная а увеличивается на единицу. В процессе пользования этой программой предполагается, что если в поле Едит-а стоит ноль(не указана), то высота этой вставки зависит от высоты соседних, которые указаны. Не знаю, насколько полезные эти мои подробности, ну да ладно, напишу. а:=0 - у меня действитна, нигде не прописано. Serge_Bliznykov 2)это мне тут насоветовали попутно вот картинка того, что у меня есть: ![]() цикл не должен происходить столько раз сколько на нем едитов? неа. Едитов на форме больше, чем фрагментов на двери. |
![]() |
![]() |
![]() |
#8 |
DelphiProger
Участник клуба
Регистрация: 14.11.2010
Сообщений: 1,023
|
![]()
последнии вариант от Serge_Bliznykov разве не подошел?
только, думаю ItemIndex('4-х фрагментная') = 3 ................................... .3...........................2 ................................... .2...........................1 ................................... .1...........................0 j:= cbb1.ItemIndex + 1;
VirusN13
Последний раз редактировалось ArtGrek; 15.02.2011 в 19:36. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 25.08.2010
Сообщений: 62
|
![]()
ArtGrek
да, с j+1 я понял, что надо подгонять значения. Serge_Bliznykov спасибо, Ваш вариант как раз подошёл. Потихоньку разбираюсь как это всё работает. Соответственно, ещё один вопрос, уже не по теме: как организовать подпрограмму(если в дельфи вообще есть такое понятие, как подпрограмма)? В бейсике помнится было достаточно просто - GoSub(номер строки), В дельфи же что-то я не могу найти никакого описания. У меня тут кусок кода есть, который повторяется много раз, ведь как-то можно организовать обращение к нему? |
![]() |
![]() |
![]() |
#10 |
DelphiProger
Участник клуба
Регистрация: 14.11.2010
Сообщений: 1,023
|
![]() Код:
VirusN13
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как понизить число в цикле For? | Wild_klas | Помощь студентам | 6 | 21.10.2010 12:39 |
как работает счетчик в цикле for? | Kushtemo | Общие вопросы C/C++ | 7 | 28.08.2010 14:35 |
UpdateData(false) в цикле? вывод числа в Edit box | Иван36 | Помощь студентам | 5 | 31.03.2008 18:33 |
Как вывести в цикле for ... do строки? | ViTYAi2007 | Помощь студентам | 14 | 27.03.2008 05:47 |
как выбрать значения в цикле в паскале | Melok | Помощь студентам | 5 | 14.12.2007 10:46 |