![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
kr3v3tkus |
![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
подскажите плз как осуществляется работа с TShellListView и TShellTreeView, конкретнее - необходимо указать директорию, у которой в нутри есть папки, для каждой из них сделать проверку SelectedFolder.SubFolders, если подпапок нет - совершить какое-либо действие, если же есть - то уйти вниз ещё на уровень и снова совершить предыдущее действие. Тоесть например:
![]() в папке Black Lagoon ещё 2 папки в каждой из которых уже нет подпапок а в папке !new1 есть ещё подпапки, в которых тоже могут быть подпапки Подскажите или киньте ссылку на толковый мануал плиз ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
Better Kind |
![]()
Сообщение
#2
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 52 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
рекурсия
-------------------- With best regards, Better Kind
|
kr3v3tkus |
![]()
Сообщение
#3
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
ммм я наверно оч туманно выразился ^__^ проблема в навигации - в TShellListView есть back, она вверх на уровень идёт, а вот как заставить его войти в папку?...
-------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
kr3v3tkus |
![]()
Сообщение
#4
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
хмм ладно - а если у меня есть такой код
Код if (Lw.Selected.SubItems[5] = 'dir') then begin Edit.Text := Edit.Text + Lw.Selected.Caption + '\'; AddFile(Edit.Text + '*.*', faAnyFile); end; AddFile расшаривает все файлы в директории указанной в эдите Как модифицировать эту процедуру чтобы она делала обход всех папок? я пробовал делать так Код for i := 0 to Lw.Items.Count do begin lw.Selected := lw.Items.Item[i]; но так не хочет... -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата if (Lw.Selected.SubItems[5] = 'dir') then begin ![]() Ты об этом, что-ли: procedure AddFile(path: string); |
kr3v3tkus |
![]()
Сообщение
#6
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
volvo
домо аригато ^__^ опять спас ![]() нащёт пяти - это я с книги брал и тупо переписал :[ вернее я не так понял что там написано было - думал чтото типа параметра файла который отвечает за папку, и недоумевал почему его назвали сабитемс ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
kr3v3tkus |
![]()
Сообщение
#7
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
а вот такой вопросик - есть вот такая структура папки
![]() ![]() в папке субтитров файлы на картинке справа у меня стоит такая проверка для учёта папки if (pos('.avi', SearchRec.Name))or(pos('.mkv', SearchRec.Name))or(pos('.VOB', SearchRec.Name))
ну есессно так для каждого формата так вот - почему у меня не считается эта папка? ![]() anime зы и почему когда считываеш путь папки - если встречается символ # то начиная с него обрубается всё? ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата почему у меня не считается эта папка? Что имеется в виду "не считается"? Папка появляется в Гриде, проверил. Количество видео-файлов в ней тоже появляется. Все ее подпапки тоже появляются, тоже проверил. Картинок не вижу никаких вообще, что именно у тебя "сдвигается" - непонятно.Кстати, 1. if не совсем корректное условие. В данном случае оно, возможно, как раз и делает, что нужно, но вообще подобного следует избегать... 2. if (pos('.avi', SearchRec.Name) <> 0) ...все-таки я бы записал: if UpperCase(ExtractFileExt(SearchRec.Name)) = 'AVI', мало ли, будет записано в другом регистре и все, не найдутся файлы... 3. Однотипные действия для разных расширений очень просто выносятся в отдельную процедуру... |
kr3v3tkus |
![]()
Сообщение
#9
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
Цитата Что имеется в виду "не считается"? Папка появляется в Гриде, проверил. Количество видео-файлов в ней тоже появляется. Все ее подпапки тоже появляются, тоже проверил. Картинок не вижу никаких вообще, что именно у тебя "сдвигается" - непонятно. действительно в гриде есть... а в выходном хтмл файле нету... блин ![]() нащёт регистра - я тоже думал, изза этого проблема была с vob, просто незнал как сделать ![]() а нащёт однотипных действий - я просто ночью делал - лиш бы уж както сделать ![]() ![]() зы ты знаешь, действительно исправил я условия, правда эффект не совсем тот получился - теперь и в гриде не отображает эту папку ззы как ты и сказал - переделал всю процедуру так Код procedure VideoShare(path: string; SearchRec:TSearchRec); var AType: TStringList; ext: string; begin AType := TStringList.Create; if (UpperCase(ExtractFileExt(SearchRec.Name)) = '.AVI')or(UpperCase(ExtractFileExt(SearchRec.Name)) = '.MKV') or(UpperCase(ExtractFileExt(SearchRec.Name)) = '.VOB')or(UpperCase(ExtractFileExt(SearchRec.Name)) ='.OGM') or(UpperCase(ExtractFileExt(SearchRec.Name)) = '.MP4') then begin inc(vcount); ext := UpperCase(ExtractFileExt(SearchRec.Name)); ext := copy(ext, 2, length(ext)-1); if pos(ext, Form1.Grid.Cells[4,gridcell-1]) = 0 then begin if Form1.Grid.Cells[4,gridcell-1] = '' then begin Image(path); PathList.Add(path); infill(path, AType); end; Form1.Grid.Cells[4,gridcell-1] := Form1.Grid.Cells[4,gridcell-1] + ext + ' '; end; end; AType.Free; end; правда теперь снова в гриде нет папки - а картинка её высвечивается в хтмлке ![]() Сообщение отредактировано: kr3v3tkus - 14.02.2008 20:05 -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
kr3v3tkus, извини, не мог пройти мимо твоего кода. Там есть небольшая проблема с обходом директорий... Смотри, как можно это сделать чуть-чуть по-другому (постараюсь прокомментировать, если что непонятно - спрашивай...):
type |
kr3v3tkus |
![]()
Сообщение
#11
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
Цитата извини, не мог пройти мимо твоего кода да я тоже без судорог на него не мог смотреть ![]() ![]() вроде просмотрел, всё более менее понятно кроме Код T = (_avi, _mkv, _vob, _ogm, _mp4); Код strT: array[T] of string = ( '.avi', '.mkv', '.vob', '.ogm', '.mp4' ); вот чегот непонимаю зачем это? что вообще означает нижнее подчёркивание? ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Просто привычка, можешь без нижнего подчеркивания делать. Главное - чтобы имя не повторяло никаких зарезервированных слов и идентификаторов, а с подчеркиванием вероятность этого значительно уменьшается.
Цитата чегот непонимаю зачем это? Затем, что T - это пользовательский тип, переменные этого типа нельзя распечатывать, но можно из них создать множество. А strT - это константа, массив строк, которые можно печатать, но вот, скажем, множество из них (из строк, в смысле) уже сделать не получится. Я остановился на том, что лучше сделать массив, индексируемый моим перечислимым типом, чтобы иметь возможность создавать множество значений (экономия места и времени обработки), и в то же время сохранить возможность как-то визуализировать это множество... |
kr3v3tkus |
![]()
Сообщение
#13
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
блиин
![]() ![]() -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата если не обнулять то косяки получаются Это какие, например? Если обнулить при FormCreate и при FormDestroy, скажем - не должно быть косяков. |
kr3v3tkus |
![]()
Сообщение
#15
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
я имею ввиду: выбираем папку. делаем StartClick, вдруг надо на другом диске ещё папку обойти - мы снова делаем StartClick и тут получается что заново заполняются count и types
-------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#16
|
Гость ![]() |
Цитата тут получается что заново заполняются count и types Сорри, но "другой диск" - это значит "другой path", поэтому (если инициализировать arr не при нажатии "Start", а при старте формы, а удалять - при завершении приложения, или по какой-нибудь особой кнопке "Очистить"), все будет как положено - новые папки будут добавляться в контейнер. |
kr3v3tkus |
![]()
Сообщение
#17
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
ну вот у меня он на первый взгляд если по папке добавлять то ко всем types нижних элементов ещё свои прикручивает =\ просто тады поставлю обнуление types на новые файлы
зы хмм ток чёт немогу понять где -___- ![]() просто вот так получаеца если по папке добавлять Сообщение отредактировано: kr3v3tkus - 15.02.2008 0:26 -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#18
|
Гость ![]() |
procedure TForm1.StartClick(Sender: TObject);Ну, и процедуры стали методами класса формы: ... |
kr3v3tkus |
![]()
Сообщение
#19
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 111 Пол: Мужской Реальное имя: Рома Репутация: ![]() ![]() ![]() |
блин
![]() Цитата [Error] MainUnit.pas(86): Undeclared identifier: 'arr' [Error] MainUnit.pas(86): Incompatible types [Hint] MainUnit.pas(35): Private symbol 'MyAddFolderToContainer' declared but never used итд((( -------------------- Цитата . . \__/ (**) (>:=:=:~~ ^ ^ ^ ^ Креветка присваивания :DDD |
volvo |
![]()
Сообщение
#20
|
Гость ![]() |
Ну, перенести-то заголовки перенес, а изменить в реализации:
procedure TForm1.MyAddFolderToGrid(path: string); // <--- и т.д.? |
![]() ![]() |
![]() |
Текстовая версия | 13.07.2025 6:17 |