|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.07.2011, 18:25 | #1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
цикл for i:=0 to count -1 do. Уменьшать счётчик i внутри цикла...
Доброго времени суток! Пишу приложение нужно сортировать список файлов.. вот функция:
Код:
Код:
Но при этом, номер текущей(i2) строки не изменяется.. До выполнения delete, ANewFilesList.Count = 10 После выполнения delete, ANewFilesList.Count = 9 До выполнения delete, i2 = 0 После выполнения delete, i2 = 1 (Должен стать 0) Так вот после выполнения delete, i2 нужно уменьшить на один чтобы отсчёт снова вести с 0... В коде я это показал: i2:=i2-1; Но компилятор не даёт этого сделать. Почему? Ошибка: [DCC Error] MiscUnit.pas(176): E2081 Assignment to FOR-Loop variable 'i2' Подсабите решением. ---------------------------- Есть вариант просто создать TSTemp:Tstrings; и в него записывать новые файлы. Затем старый список чистить, а на его место ставить данные из TSTemp:Tstring; Но думаю есть решение и моей проблеме... Последний раз редактировалось Человек_Борща; 01.07.2011 в 18:30. |
01.07.2011, 18:31 | #2 | |
Редкий тунеядец
Форумчанин
Регистрация: 29.10.2006
Сообщений: 595
|
переменную итерации нельзя менять в рамках цикла.. например такой код тоже не за работает
Цитата:
Советую сокращать количество циклов банальным выходом по break) Последний раз редактировалось execom; 01.07.2011 в 18:34. |
|
01.07.2011, 18:34 | #3 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Ну, вместо цикла for попробуйте пользовать while.
|
01.07.2011, 18:40 | #4 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
for i2 := aNewFilesList.Count - 1 downto 0 do
|
01.07.2011, 18:56 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Если вместо TStrings использовать TStringList, то там есть возможности автосортировки - свойства Sorted и CaseSensitive
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
01.07.2011, 19:52 | #6 | ||
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Цитата:
Пака увидел для себя вариант: Цитата:
|
||
01.07.2011, 20:11 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
вам нужен просто цикл while aNewFileList.Count>0 do
внутри использовать нулевой индекс. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
01.07.2011, 20:40 | #8 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
вероятность того что aNewFileList.Count = 0 очень мала.
|
01.07.2011, 20:58 | #9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
значит идите через while с ручным индексом цикла.
(если надо увеличивайте иначе нет) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
01.07.2011, 21:06 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
либо, как уже ранее предлагалось, использовать условный цикл (while или repeat)
но много лучше использовать технику, которую уже предложил ReportCube в пост #4 Код:
p.s. про этот УЖАС Цитата:
так ещё про методы IndexOf и Find забыли? Или они чем-то не подходят, нужно именно в цикле брать .Text и искать вхождение строки?! Последний раз редактировалось Serge_Bliznykov; 01.07.2011 в 21:10. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
счётчик (цикл в цикле) | PARTOS | Microsoft Office Excel | 3 | 26.10.2010 21:13 |
Оператор цикла с постусловием (цикл REPEAT) | 0001 | Помощь студентам | 3 | 18.01.2010 00:02 |
счётчик цикла | Kivin13 | Общие вопросы Delphi | 3 | 11.09.2007 12:57 |