|
Модераторы: Poseidon, Snowy, bems, MetalFan |
|
Slawanix |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Ну очень интересный вопрос:
Я загружаю в StringGrid одинаковые имена файлов, которые находятся в разных каталогах, отображается только одно имя, хоть код и добавляет второе аналогичное имя файла из другого каталога. Если у кого-то возникнет вопрос: может быть я не подготовил строку в таблице, отвечаю - подготовил, но строка появляется пустой. Еще заметил одну особенность: при загрузке имен файлов они автоматом поалфавиту сортируются, может быть здесь собака зарыта, но тогда как енто вырубить? Загрузка имен следующим образом:
Это сообщение отредактировал(а) Slawanix - 2.8.2004, 02:17 --------------------
моск кипит |
|||
|
||||
Dynamic |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Slawanix
StringGrid ничего сам не сортирует, файлы добавляются в том порядке, в каком их находят FindFirst/FindNext (при тестировании получалось, что по дате создания).
Не смог воспроизвести:
Давай свой код. -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
||||||
|
|||||||
Slawanix |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Все, я разобрался: дело действительно было не в таблице а в коде, просто функция поиска файлов была рекурсивной и та самая i обнулялась в начале функции, поэтому при рекурсивном обращении она снова обнулялась и запись в таблицу не добавлялась а начиналась с начала, так как StrigGrid[0,i]=StringGrid[0,0]
Спасибо! Говорила мне мама - не прыгай с девятого этажа! --------------------
моск кипит |
|||
|
||||
Slawanix |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
полностью рабочая процедура, но так как это для синхронизатора файлов, то предполагается две таблицы.Переменая i инициализируется вне функции(т.е. i:=0). В ее составлении мне помогли FAQ Vit'a и Guest(та часть, где идет рекурсивный поиск файлов)
Это сообщение отредактировал(а) Slawanix - 3.8.2004, 00:16 --------------------
моск кипит |
||||
|
|||||
p0s0l |
|
|||
Г-н Посол Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Комментариев больше, чем кода... Ты всегда так пишешь ?
-------------------- С уважением, г-н Посол. |
|||
|
||||
Slawanix |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Уважаемый г-н Посол,вы совершенно правы: пояснений действительно больше чем достаточно, но отчасти, это из-за того что это отладочная функция, где эти к-ии(которые я не нашел времени удалить) и сообщения больше для моего теста, но не для юзеров; а ,отчасти, чтобы избежать, быть может, лишних распросов. Но в out-версиях присутствует только самое необходимое(код и минимум коментов). С уважением, Slawanix. P.S. Хотелось бы узнать Ваше мнение и замечания по поводу этой процедуры. Говорила мне мама - не прыгай с девятого этажа --------------------
моск кипит |
|||
|
||||
p0s0l |
|
||||||||||||||||||
Г-н Посол Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Посмотрел я функцию, потестил - сравнил папку текущего проекта и папку backup'а, сделанного несколько месяцев назад, выдало всего пару файлов...
Вообще, странно, что в теле функции не объявлены переменные SearchRec и NF... Я так понял - они глобальные ? Хотя SearchRec обязательно должна быть локальной... Т.е. начало процедуры должно быть таким:
Далее... С переменной i тоже не очень ясно: она увеличивается независимо от увеличения Grid.RowCount, и если FileExists = True, но Time<=DateDos, то i увеличится зазря, я так понимаю... Ну короче, у меня на экране не все ряды в StringGrid'е были заполнены, были пропуски... Я бы на твоём месте сделал вместо Grid[x, i] := ... так: Grid[x, Grid.RowCount-1] := ... Далее...
Тоже упростить можно это:
И это тоже можно упростить:
Что еще ?... В процедуре есть 2 одинаковые части добавления инфы в Grid - так и напрашивается вынести это отдельно. Например так:
В итоге получается типа такого:
-------------------- С уважением, г-н Посол. |
||||||||||||||||||
|
|||||||||||||||||||
Dynamic |
|
||||
Опытный Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Еще вместо:
можно использовать функции из SysUtils:
имхо, второй вариант производительнее, т.к. на один вызов процедуры меньше (при использовании в рекурсивном алгоритме это может дать определенный выигрыш). -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
||||
|
|||||
p0s0l |
|
||||
Г-н Посол Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
А вместо:
-------------------- С уважением, г-н Посол. |
||||
|
|||||
Dynamic |
|
||||
Опытный Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Ну и тогда уж вместо
пишем
В умной книжке прочитал, что обращение к полям класса при помощи with...do происходит чуть быстрее, чем через точку, ну и текста поменьше. -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
||||
|
|||||
Slawanix |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Да, с этим казусом я при тесте тоже столкнулся и исправил так:
то есть есть i меняется вместе со строками. Остальное пошел переваривать, чего и говорить, сыроватый код выдал, спасибо огромное за соображения, есть над чем подумать и исправить. Говорила мне мама - не прыгай с девятого этажа! --------------------
моск кипит |
||||
|
|||||
Петрович |
|
||||||
Эксперт Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Умная книжка сильно устарела. Это было правдой для давних реализациях компиляторов Pascal. У Delphi, мозгов хватает самой так оптимизировать. Так-что теперь, with нужен лишь для получения более читабельного, компактного и красивого текста. Добавлено @ 15:07
По моему, это зря. Они (комментарии) что, хлеба просят в out-версиях? . Зато, через пару лет, даже сам заглянув в текст, быстро сможеш разобраться. Лично я, никогда не удаляю уже написанных коментариев. Если они конечно написаны по делу.
А синхронизатор похоже не отслеживает случаем когда в Dir2 имеются файлы, которые отсутствуют в Dir? Если в терминах Backup, то в Backup-копии (Dir2), файлы, удаленные с оригинала (Dir) останутся жить вечно . -------------------- Все знать невозможно, но хочется |
||||||
|
|||||||
Slawanix |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 177 Регистрация: 29.7.2004 Где: г. Великие Луки Репутация: нет Всего: 1 |
Петрович , Нет, на самом деле процедура проверки директорий выполняется поочередно для каждой из папок, поэтому без внимания никто не остается. Последнее время я был в этом уверен. Спасибо за сообщение я еще разок потестю, проверю. --------------------
моск кипит |
|||
|
||||
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |