Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.133.156.156] |
|
Сообщ.
#1
,
|
|
|
В инсталляторе создаю новую страницу с TNewCheckListBox на ней. Вопрос, можно ли как-то заполнить его именами файлов из определенного каталога? Думаю, что капать надо в сторону Preprocessor'а, но что-то пока никак не решу эту проблему.
|
Сообщ.
#2
,
|
|
|
Гм. Коли упонимается препроцессор, то получается, что содержимое каталога известно на момент компиляции setup'а ? Или таки имеется в виду получить список файлов в run time ??
Добавлено Если именно через препроцессор, то примерно так: #define FindHandle #define FindResult #define Mask "F:\p2p на E\Games\Preferans\*.hlp" #sub ProcessFoundFile #define fn FindGetFileName(FindHandle) CheckListBox.AddCheckBox('{#fn}', '', 0, True, True, False, True, nil); #endsub // где в секции [Code] CheckListBox := TNewCheckListBox.Create(Page); CheckListBox.Width := Page.SurfaceWidth; CheckListBox.Height := ScaleY(97); CheckListBox.Flat := True; CheckListBox.Parent := Page.Surface; #for {FindHandle = FindResult = FindFirst(Mask, 0); FindResult; FindResult = FindNext(FindHandle)} ProcessFoundFile |
Сообщ.
#3
,
|
|
|
В том-то и дела, что хотелось бы в Run Time! Просто я сделал без Preprocessor'а вот так:
if FindFirst('Plugins\*.dmp',FindRec) then begin try Repeat if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY=0 then NewCheckListBox1.AddCheckBox(FindRec.Name,'',0,false,true,false,false,nil); Until not FindNext(FindRec); finally FindClose(FindRec); end; end; Но за вариант с Proprocessor'ом, все равно "+". |
Сообщ.
#4
,
|
|
|
Уже третий день бьюсь, но никак не выходит! Функция ExtractTemporaryFile по маске не работает! В общем, скорее всего, автоматизировать не удастся.
|
Сообщ.
#5
,
|
|
|
Цитата Profi @ Функция ExtractTemporaryFile по маске не работает! А что, разве должна? Цитата Profi @ В общем, скорее всего, автоматизировать не удастся. Что автоматизируешь то?? |
Сообщ.
#6
,
|
|
|
Цитата jack128 @ Что автоматизируешь то?? Ну, смотри. У меня есть список файлов, которые к программе идут как дополнение (то есть без них она тоже будет работать на ура), мне надо составить список в TNewCheckListBox с именами этих файлов, чтобы юзер сам выбрал какие ставить, а какую нет. Дело в том, что этих файлов много, но все они лежат в одной папке и у всех одинаковое расширение (в папке есть и другие файлы). В инсталлятор я их по маске загоняю, а вот что делать теперь? Я придумал только извлечение во временный каталог, перебор их там с добавлением в TNewCheckListBox, ну и потом установку вручную с помощь FileCopy. В таком решении автоматизировать можно все, кроме того, что во временный каталог можно извлечь файл с заранее известным именем! Следовательно, все равно руками составлять список и писать кучу ExtractTemporaryFile (ну, или в цикле, но все равно список создавать). |
Сообщ.
#7
,
|
|
|
Profi
Ну и? с помощью [#2] загоняешь список файлов в Check ListBox и при инсталяции проверяешь отмечен ли checkbox с именем файла, если отмечен, то устанавливаешь... Вроде всё просто. |
Сообщ.
#8
,
|
|
|
Цитата jack128 @ Profi Ну и? с помощью [#2] загоняешь список файлов в Check ListBox и при инсталяции проверяешь отмечен ли checkbox с именем файла, если отмечен, то устанавливаешь... Вроде всё просто. Блин, точно! Я и забыл, что Proprecessor работает до компиляции инсталлятора! |
Сообщ.
#9
,
|
|
|
Ага, ну теперь другая проблема. В help'е не нашел, можно ли в Preprocessore использовать dll?
|
Сообщ.
#10
,
|
|
|
Цитата Profi @ можно ли в Preprocessore использовать dll? хм. А зачем тебе это? |
Сообщ.
#11
,
|
|
|
Цитата jack128 @ Цитата Profi @ можно ли в Preprocessore использовать dll? хм. А зачем тебе это? Дело в том, что мне нужно получить не само имя файла, а его внутреннее имя (экспортируется в виде PChar). В коде-то я это сделал, а вот как в Preprocessor'е не нашел. |
Сообщ.
#12
,
|
|
|
Profi хм. Нет, в препроцессоре такой возможности не вижу.
А чем не нравится вариант в цикле вызывать ExtractTemporaryFile ?? (хотя он мне тоже не нравится :-) |
Сообщ.
#13
,
|
|
|
Цитата jack128 @ А чем не нравится вариант в цикле вызывать ExtractTemporaryFile ?? (хотя он мне тоже не нравится :-) То есть, создать Preprocessor'ом список, потом пройтись по нему, извлекая в {tmp}, а потом уже оттуда их подключать. Мысль. Добавлено Блин, получилось наконец-то! |