|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
02.06.2011, 12:39 | #1 |
Пользователь
Регистрация: 02.06.2011
Сообщений: 31
|
Цикл и Сравнение
Хотел сравнить весь столбец с текущим значением(при отсутствии совпадений прибавляем к сравниваемому значению +1 и повторяем), но нет результата. Вот то, чем пользовался:
while k=0 do begin for i:=0 to 30 do begin AdoTable1.RecNo:=i; //обращение к строкам от 0 до 30-ой //сравниваем значение столбцов построчно if (StrToInt(Adotable1.Fields.Fields[2].AsString)=Pr) then begin k:=1; DBGrid1.Columns.Items[1].FieldName:=FloatToStr(i); DBGrid1.Columns.Items[0].FieldName:=IntToStr(ADOTable1.RecN O); end; end; Pr:=Pr+1; end; |
02.06.2011, 13:07 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
а кто будет задавить НАЧАЛЬНЫЕ значения?
Код:
DBGrid1.Columns.Items[1].FieldName:=FloatToStr(i); наверно хотелось поменять название колонки? DBGrid1.Columns.Items[1].Title.caption:=FloatToStr(i);
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 02.06.2011 в 13:13. |
02.06.2011, 20:02 | #3 |
Пользователь
Регистрация: 02.06.2011
Сообщений: 31
|
Спасибо, но это все задается заранее - > k:=0 и Pr - произвольное, оно обязательно совпадет с чем то из массива столбика Adotable1.Fields.Fields[2].AsString
хотя Pr ограничен 20000. не могу решить задачу. когда пытаюсь компиллировать выдает ошибку: Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом |
02.06.2011, 20:07 | #4 |
Пользователь
Регистрация: 02.06.2011
Сообщений: 31
|
Ошибка на этапе обращения к строкам
AdoTable1.RecNo:=i; |
02.06.2011, 20:43 | #5 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Обычно для навигеции (перемещения по записям) используют методы first Last Next Prev. и цикл while Код:
программа — запись алгоритма на языке понятном транслятору
|
|
03.06.2011, 02:41 | #6 |
Пользователь
Регистрация: 02.06.2011
Сообщений: 31
|
Переделал, но значение он всегда выдает из последней строки. Как сделать так, чтобы после того как он посмотрел все значения столбца, только тогда прибавлял к Pr еденицу и повторял цикл? не знаю куда воткнуть Pr:=Pr+1. я уже совсем близок = ) выручайте
Код:
if Pr>20000 then k:=1; // <- и это к нему же = ) end; ___________ Код нужно оформлять по правилам: тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Не забывайте об этом! Модератор. Последний раз редактировалось Serge_Bliznykov; 03.06.2011 в 08:24. |
03.06.2011, 08:25 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а можно "разжевать" - что у Вас есть и что Вы хотите получить?..
прямо приведите небольшой примерчик (с циферками) и расскажите... |
03.06.2011, 10:09 | #8 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 03.06.2011 в 10:21. |
|
03.06.2011, 17:53 | #9 |
Пользователь
Регистрация: 02.06.2011
Сообщений: 31
|
Все работает, но только если Pr отличается менее чем на +\-2 от того, что есть в базе данных, тогда d (кол-во выполнения цикла верно (1или2), в ином случае оно 50-72 тысячи достигает.
Делаю я все то же самое: сравниваю столбцы строк[0..20] по столбцу 2 со значением Pr, при отсутствии совпадений Pr:=Pr+1 и опять сравниваем содержимое столбца 2 построчно в AdoTable1, в чем может быть проблема? Код:
Последний раз редактировалось Apostol13; 03.06.2011 в 23:26. |
03.06.2011, 19:04 | #10 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Не надо всЕ пихать в о внутренний код. чем больше ты из него вынесешь тем лучше. может он вовсе окажеся не нужным.
Вот держи разбирайся. Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 03.06.2011 в 19:06. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сравнение | slavsmo | Microsoft Office Excel | 2 | 05.04.2010 17:51 |
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? | Anarki | Общие вопросы C/C++ | 3 | 13.11.2009 19:23 |
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) | Mr.User | Помощь студентам | 9 | 23.11.2007 01:34 |