Еще вопросик. Как сделать сортировку в диалоговом окне открытия файлов? В
Ворде такая вещь есть..а вот ни с тандартном сабже ни в rx-совом ничего
таокого не нашел :(
With Best Regards
EL> Еще вопросик. Как сделать сортировку в диалоговом окне открытия
EL> файлов? В Ворде такая вещь есть..а вот ни с тандартном сабже ни в
EL> rx-совом ничего таокого не нашел :(
Hе совсем понял, что нужно.
Если кнопку сортировки в диалоге - можно выбрать режим вывода таблица и потом
щелкай по нужному полю (имя тип ...)и все сортируется, по моему и в ворде так
же.
если хочется файлы отсортировать в открытом диалоге можно так:
procedure TForm1.OpenDialogSortfiles;
var counter, look:integer; temp:Tstrings;
begin
if OpenDialog1.Files.Count<>1 then begin
temp := TStringList.Create;
for counter:=0 to OpenDialog1.Files.Count-1 do
temp.Append(LowerCase(OpenDialog1.Files.Strings[counter]));
for counter:=0 to temp.Count-1 do
for look:=counter+1 to temp.Count-1 do
if temp[look]<temp[counter] then begin
OpenDialog1.Files.Exchange(look, counter);
temp.Exchange(look,counter);
end;
temp.Free;
end; {if}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OpenDialogSortfiles;
opendialog1.Execute;
end;
--
Best regards,
Sergey Kuchumov
Спасибо! То что искал :)
Best Regards
... В ответ на письмо от 06 декабря 2008 от Sergey Kuchumov к
oit...@mgw.npp.zp.ua сообщаем:
EL>> Еще вопросик. Как сделать сортировку в диалоговом окне открытия
EL>> файлов? В Ворде такая вещь есть..а вот ни с тандартном сабже ни в
EL>> rx-совом ничего таокого не нашел :(
SK> Hе совсем понял, что нужно.
SK> Если кнопку сортировки в диалоге - можно выбрать режим вывода таблица
SK> и потом щелкай по нужному полю (имя тип ...)и все сортируется, по
SK> моему и в ворде так же.
SK> если хочется файлы отсортировать в открытом диалоге можно так:
Ужоз. А заставить TStringList сортироваться самостоятельно, или, на крайний
случай, вызвать ему метод Sort среди настоящих Delphi-программистов уже
немодно? Гораздо проще написать свою версию пузырьковой сортировки? А вы
пробовали исполнить этот код на директории с парой десятков тысяч файлов?
SK> procedure TForm1.OpenDialogSortfiles;
SK> var counter, look:integer; temp:Tstrings;
SK> begin
SK> if OpenDialog1.Files.Count<>1 then begin
SK> temp := TStringList.Create;
SK> for counter:=0 to OpenDialog1.Files.Count-1 do
SK> temp.Append(LowerCase(OpenDialog1.Files.Strings[counter]));
SK> for counter:=0 to temp.Count-1 do
SK> for look:=counter+1 to temp.Count-1 do
SK> if temp[look]<temp[counter] then begin
SK> OpenDialog1.Files.Exchange(look, counter);
SK> temp.Exchange(look,counter);
SK> end;
SK> temp.Free;
SK> end; {if}
SK> end;
SK> procedure TForm1.Button1Click(Sender: TObject);
SK> begin
SK> OpenDialogSortfiles;
SK> opendialog1.Execute;
SK> end;
До встречи, Sergey!
Sergey (serge_bychkov[zzz]mail333.com) ICQ# 21014758
Once (Monday December 08 2008) at 16:21 someone named Sergey Bychkov wrote to
Sergey Kuchumov. So, look here:
SB> Ужоз. А заставить TStringList сортироваться самостоятельно, или, на
SB> крайний случай, вызвать ему метод Sort среди настоящих
SB> Delphi-программистов уже немодно? Гораздо проще написать свою версию
SB> пузырьковой сортировки? А вы пробовали исполнить этот код на
SB> директории с парой десятков тысяч файлов?
А у вас таких случаев довольно много? Что то не пойму, как на вопрос человеку
дать ответ, так никого. А "покритиковать" целый отряд "настоящих дельфи
программистов" использующих модные методы программирования. Вам же никто не
мешает примерчик можете привести сортировки методом, ну хоть пузырька.
Once (Monday December 08 2008) at 14:54 someone named Sergei Andreev wrote to
Sergey Kuchumov. So, look here:
Я конечно не претендую на истину или суперадекватность, но приведенный пример
(хоть я не автор, но я проверил) полностью рабочий.
SK>> 1) Hе
SA> LowerCase, а AnsiLowerCase.
А вот когда делаешь так то сортировка рускоязычных файлов/каталогов не
работает, т.к. списочек не в 1251, а в 866, так что именно LowerCase/
SA> 2) Hи одна из них нафиг не нужна
SA> temp.AddStrings(OpenDialog1.Files); и для сравнения использовать
SA> AnsiCompareText.
см.выше
SA> 3) OP хочет отсортировать все файлы, а не только
SA> выделенные в данный момент времени. 4) Твой первый совет - более
SA> адекватное решение, чем последовавший за ним кусок "кода".
может не стоит так горячиться, человек задал вопрос, я ответил, в меру своего
понимания проблемы. Знаешь как лучше - молодец, нервничать только не надо.
08 Dec 08 16:21, Sergey Bychkov wrote to Sergey Kuchumov:
SB> крайний случай, вызвать ему метод Sort среди настоящих
SB> Delphi-программистов уже немодно? Гораздо проще написать свою версию
SB> пузырьковой сортировки? А вы пробовали исполнить этот код на
SB> директории с парой десятков тысяч файлов?
Hу, к слову говоря, вот это-то как-раз никакого значения не имеет - шансы, что
юзер при помощи TOpenDialog найдет среди десятка тысяч файлов нужный все равно
принебрежимо малы :) Хотя это конечно не повод изобретать велосипед...
Bye!
Andrey
... В ответ на письмо от 08 декабря 2008 от Sergey Kuchumov к Sergey Bychkov
сообщаем:
SB>> Ужоз. А заставить TStringList сортироваться самостоятельно, или,
SB>> на крайний случай, вызвать ему метод Sort среди настоящих
SB>> Delphi-программистов уже немодно? Гораздо проще написать свою
SB>> версию пузырьковой сортировки? А вы пробовали исполнить этот код
SB>> на директории с парой десятков тысяч файлов?
SK> А у вас таких случаев довольно много? Что то не пойму, как на вопрос
SK> человеку дать ответ, так никого.
А это вопрос как бы и не для этой эхи.
SK> А "покритиковать" целый отряд "настоящих дельфи программистов"
SK> использующих модные методы программирования.
SK> Вам же никто не мешает примерчик можете привести сортировки методом,
SK> ну хоть пузырька.
Как можно заметить, модно как раз оказывается изобрести велосипед, и предложить
самое неэффективное из существующих решений.
... В ответ на письмо от 09 декабря 2008 от Andrey Zhukov к Sergey Bychkov
сообщаем:
SB>> крайний случай, вызвать ему метод Sort среди настоящих
SB>> Delphi-программистов уже немодно? Гораздо проще написать свою
SB>> версию пузырьковой сортировки? А вы пробовали исполнить этот код
SB>> на директории с парой десятков тысяч файлов?
AZ> Hу, к слову говоря, вот это-то как-раз никакого значения не имеет -
AZ> шансы, что юзер при помощи TOpenDialog найдет среди десятка тысяч
AZ> файлов нужный все равно принебрежимо малы :) Хотя это конечно не повод
AZ> изобретать велосипед...
Пожалуй соглашусь - программа такого уровня пусть лучше сразу зависнет на
пузырьковой сортировке. Пользователь быстрее поймёт, что ему подсунули что-то
не то.
До встречи, Andrey!
Once (Tuesday December 09 2008) at 16:32 someone named Sergey Bychkov wrote to
Sergey Kuchumov. So, look here:
SB> Как можно заметить, модно как раз оказывается изобрести велосипед, и
SB> предложить самое неэффективное из существующих решений.
Предложите эффективное.
А по поводу десятков тысяч файлов..столько думаю не будет..однако на данный
момент около 800 их уже есть и к-во будет расти
Best Regards
Once (Wednesday December 10 2008) at 02:22 someone named Edward Luzhnih wrote
to Andrey Zhukov. So, look here:
EL> А по поводу десятков тысяч файлов..столько думаю не будет..однако
EL> на
EL> данный момент около 800 их уже есть и к-во будет расти
А по поводу десятков тысяч файлов, я думаю что и штатные виндовые средства
будут притормаживать. Большого смысла хранить все в одной куче я не вижу. Для
этого и придуманы каталоги (папки) не так ли? Кроме того можно попробовать
написать свой OpenDialog(к вопросу о велосипедах) 8)
> Hу, к слову говоря, вот это-то как-раз никакого значения не имеет -
> шансы,
> что юзер при помощи TOpenDialog найдет среди десятка тысяч файлов нужный
> все равно принебрежимо малы :) Хотя это конечно не повод изобретать
> велосипед...
К тому же, есть такая бяка.
Если выбрать много файлов, например для обработки, длина строки из сцепленных
вместе имен файлов не может превышать 2 Гб. Отсюда получаетя забавный фокус,
если больше 2 Гб, всё работает, ошибок нет, но некоторые файлы не попадают в
обработку.
Hарод! Hе ссорьтесь! Человек действительно попытался помочь. Я в общем то
посмотрел в каком направлении на основе ваших сообщений копать и хочу сказать
спасибо всем кто проявил участие. Дальше уже сам сделаю что нужно :)
Best Regards
09 Dec 08 06:24, Lexa Shirshin wrote to Andrey Zhukov:
LS> Если выбрать много файлов, например для обработки, длина строки из
LS> сцепленных вместе имен файлов не может превышать 2 Гб. Отсюда
LS> получаетя забавный фокус, если больше 2 Гб, всё работает, ошибок нет,
LS> но некоторые файлы не попадают в обработку.
Ээээ... Ты когда-нибудь видел программу, в которой _список_ файлов для
обработки занимает 2 гига, и она при этом работает? ;)
Bye!
Andrey
P.S. Hе, я конечно достаточно легко могу представить себе, скажем, здоровенную
"электронную библиотеку" - но формировать такой список в памяти, а не в
таблицах БД, например, мягко говоря странно.
Я провтыкал. приведенный тобой пример расчитан на выбранные файлы..а не на все
что выводится :)
Best Regards
... В ответ на письмо от 09 декабря 2008 от Sergey Kuchumov к Sergey Bychkov
сообщаем:
SB>> Как можно заметить, модно как раз оказывается изобрести
SB>> велосипед, и предложить самое неэффективное из существующих
SB>> решений.
SK> Предложите эффективное.
0. Читать книжки, доки, маны. Они - рулез.
1. +RU.DELPHI.CHAINIK
До встречи, Sergey!
> Ээээ... Ты когда-нибудь видел программу, в которой _список_ файлов для
> обработки занимает 2 гига, и она при этом работает? ;)
Файлы - это запись голоса, каждый 0.2-3 минуты. Каждый каталог содержит до
хрена файлов.
Предоставлена возможность для обработки выбирать в TOpenDialog по маске файлы.
Было замечено, что некоторые файлы не обрабатываются. В процессе выяснения
стало понятно, что есть ограничение в 2Гб на длину строки, содержащую
последовательно добавленные имена файлов.
Поборол проверкой, FindFirst и т.д.
SA> Кстати, я так и не понял, чем тебе не подходит сортировка
SA> визуальными средствами самого диалога: выбираешь
SA> вид "Таблица" и клацаешь по заголовку нужной колонки?
Дело в том что я не смог найти где сделать что бы сортировка по умолчанию
была в виде таблицы сразу. По умолчанию там "список" выбран. Может где то
пропустил ..но перерыл свойства как Rx-ового TFileNameEdit так и TOpenDialog,
но переключения программно вида отображаения файлов не нашел как и сортировки.
В итоге нашел компоненты Raize и на основании исходников тамошней формы
похожей на TOpenDialog - сделал свою с нужными мне параметрами. Правда в
Word-e есть еще лучше вариант. Там можно выбрать любой вид отображения файлов
и там же есть пункт сортировки по имени, типу, размеру,дате. Это было бы вобще
иделально. Hо хотя бы так как сделал уже приемлемо.
Best Regards
11 Dec 08 22:08, Lexa Shirshin wrote to Andrey Zhukov:
>> Ээээ... Ты когда-нибудь видел программу, в которой _список_ файлов
>> для обработки занимает 2 гига, и она при этом работает? ;)
LS> Файлы - это запись голоса, каждый 0.2-3 минуты. Каждый каталог
LS> содержит до хрена файлов. Предоставлена возможность для обработки
ОК, понял. Главное, никогда не ставь это прогу на FAT32 раздел...
Bye!
Andrey
LS> Предоставлена возможность для обработки выбирать в TOpenDialog по маске
LS> файлы. Было замечено, что некоторые файлы не обрабатываются. В процессе
LS> выяснения стало понятно, что есть ограничение в 2Гб на длину строки,
LS> содержащую последовательно добавленные имена файлов.
Вообще-то 2Гб - это ограничение не на длину строки, а ограничение на размер
всего адресного пространства для w32 приложений (без 4gt tuning). _Задолго_
до достижения строкой хотя бы половины от этого значения ты получишь OOM.
Всяческих благ,
Максим Русов
Once (Thursday December 11 2008) at 22:08 someone named Lexa Shirshin wrote to
Andrey Zhukov. So, look here:
LS> Файлы - это запись голоса, каждый 0.2-3 минуты. Каждый каталог
LS> содержит до хрена файлов. Предоставлена возможность для обработки
LS> выбирать в TOpenDialog по маске файлы. Было замечено, что некоторые
LS> файлы не обрабатываются. В процессе выяснения стало понятно, что есть
LS> ограничение в 2Гб на длину строки, содержащую последовательно
LS> добавленные имена файлов. Поборол проверкой, FindFirst и т.д.
Hа мой взгляд, самое время задуматься о создании базы данных...
--
Best regards,
Vlad Kiselev