Форум: "Потрепаться";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
ВнизШАГ в for Найти похожие ветки
← →
Silentium! (2003-06-13 11:49) [0]Люди добрые помогите мне ! Как мне указать шаг в цикле for. В справке ничего по этому поводу. Надо что бы он считал через каждые три... ничего не могу поделать... помогите... чем сможете :) Заранее
← →
Song (2003-06-13 11:50) [1]Никак. Используй While .. Do или Repeat .. Until
← →
Юрий Зотов (2003-06-13 12:51) [2]Можно и for, только нужно самому сформировать индекс:
for i := 0 to (Count div 3) do Arr[i * 3] := ...
← →
_ALEXey_ (2003-06-13 13:27) [3]Пишешь в начале цикла условие If i mod 3 <> 0 then Continue;, дальше свой код.
← →
Федя (2003-06-13 14:53) [4]step:=3;
for i:=0 to 100 do
begin
//тело цикла
i:=i+step;
end
И ни каких извратов...
← →
clickmaker (2003-06-13 14:56) [5]Федя (13.06.03 14:53)
step:=3;
for i:=0 to 100 do
begin
//тело цикла
i:=i+step;
end
И ни каких извратов...
Не пойдет, Федя. На это Дельфя ругнется "Assignment to FOR-Loop variable "i""
← →
Федя (2003-06-13 15:02) [6]Тогда вот-так:
procedure Step(Var i:integer; inc:integer);
begin
i:=i+inc;
end;
for i:=0 to 100 do
begin
//тело цикла
step(i,3);
end
Про "Assignment to FOR-Loop variable "i"" не знал хотя в Pascal 7.0 нормально работало и я бы вынес это в варнинг
← →
Anatoly Podgoretsky (2003-06-13 15:51) [7]А зачем Федя заниматься извращениями
← →
Федя (2003-06-13 15:55) [8]2Anatoly Podgoretsky ©
А конкретно?
← →
Palladin (2003-06-13 16:01) [9]
> Федя (13.06.03 15:55)
зачем вызов функции в цикл пихать?
там повыше, красивые решения ситуации...
← →
Федя (2003-06-13 16:05) [10]Например?
← →
Anatoly Podgoretsky (2003-06-13 16:10) [11]Не твое - не трогай
← →
Silentium! (2003-06-13 16:24) [12]ээм.. не хочу мешать вашим обсуждениям :) Но разрешите вас поблагодарить господа :)
← →
Silentium! (2003-06-13 16:27) [13]Федору в частности и всем остальным спасибо. А song тебе, Циклы "до" и "пока" меня не интерисовали.
← →
Silentium! (2003-06-13 16:38) [14]эээ нет Мастера. Федя тебе, твой вариант не работает. Весь листинг просисан на процедуру нажатия кнопки. Присутствие второй процедуры вызывает характерную брань. _ALEXey_ тебе, на твой вариант тоже ругается :)
← →
MsGuns (2003-06-13 16:48) [15]ИМХО, вариант Ю.Зотова - самый изящный для обработки каждого n-го индекса.
А вообще, если надо "квадратно-гнездовое" сканирование, чем не нравится простой While/Until с модификаций индекса рученьками как треба ?
← →
Федя (2003-06-13 16:49) [16]Странно у меня работает. А что, у тебя пишет?
← →
Моджахед (2003-06-13 21:21) [17]2 Федя
У всех пишет одинаковое. Грешно, мол, Федор, пытаться модифицировать переменную-счетчик цикла. Ай-да Федор!
← →
Федя (2003-06-13 23:44) [18]И что это у вас такое пишет?
У меня на D7 в таких случаях как:
Prcedure XXX(Var i:integer)
begin
i:=i+x
end
или
Var i:integer;
pi:^integer;
begin
pi:=@i;
for i:=0 to 100 do
begin
pi^:=i+1;
end;
end;
проходит нето что, без err но даже без war
← →
Юрий Зотов (2003-06-14 00:36) [19]Эх, Федя! Нехорошо обманывать компилятор. И себя заодно, и других тоже. Во-первых, это уже ДРУГОЙ код. Во-вторых, кто как, а лично я не дам и ломаного гроша за то, что он будет нормально работать при включенной оптимизации и локальном объявлении счетчика цикла.
← →
Palladin (2003-06-14 01:10) [20]
> Федя (13.06.03 16:05)
например смотри Юрий Зотов © (13.06.03 12:51)
ибо это наиболее правильно и надежно для for!
← →
Silentium! (2003-06-14 03:48) [21]Можно и for, только нужно самому сформировать индекс:
for i := 0 to (Count div 3) do Arr[i * 3] := ...
Я так понял мне надо описать одномерный массив ? Господа ну поймите меня. У меня есть memo... в нем строчки. И в for у меня обрабатывается по три записи из поле за раз (предложения сделдать три for не принимается, интим и маркетинг тоже). С шагом один (по умолчанию) получается такая ситуация что каждая запись обрабатывается по три раза. Вот именн для этого мне и надо сделать шаг 3. Надеюсь ситуация стала была более ясной.
← →
Юрий Зотов (2003-06-14 04:41) [22]Не очень подробное описание задачи, но уже конкретнее. Вам нужно примерно вот что:
with Memo1 do
begin
// Обрабатываеи по три строки в одном цикле
for i := 0 to (Count - 1) div 3 do
begin
j := 3 * i;
Lines[j] := ...;
Lines[j + 1] := ...;
Lines[j + 2] := ...
end;
// Обрабатываем оставшиеся одну или две строки
j := Count mod 3;
if j = 2 then Lines[Count - 2] := ...;
if j >= 1 then Lines[Count - 1] := ...
end;
← →
Silentium! (2003-06-14 06:34) [23]Юрий Зотов :) Большое вам спасибо. Я сейчас потестил программу все работает. Все оказалось до смешного просто... и как у меня у самого мозгов не хватило. Очень благодарен вам и всем остальным.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c