Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26149
Рейтинг: 2127
#76: 2016-04-02 12:02:12 ЛС | профиль | цитата
Второй пункт нелогичен совсем. Если выдаются только директории, то и на выходы, и на счетчик должны попасть только директории.
Для файлов -- то же самое, но директории попадать не должны.
Для всего -- и выходы, и счетчик должны срабатывать на все.
карма: 22

0
Ответов: 2059
Рейтинг: 132
#77: 2016-04-02 14:01:34 ЛС | профиль | цитата
Лебедь, рак и щука в одном аквариуме(квадратике) не размножаютcя!
1. Если Include=Files, то на onSearch выдаются файлы, прошедшие маску, с инкрементом счетчика. Точка.
На onOtherFiles - только файлы не прошедшие маску (папки не выдаются). Может быть для поиска левых файлов? У совместимости больший козырь, а так...
2. Если Include=Dirs, то на onSearch выдаются только все найденные папки. Точка.
Только инкрементируется счетчик - возможно. ?
3. Если Include=All, (сложный вопрос), то на onSearch выдаются все папки, и прошедшие маску файлы. Точка.
Больше никаких телодвижений!!!
4. + точку = procedure _work_doInclude(var _Data:TData; Index:word);

Квадратики не библиотеки...
И не надо стремиться к универсальности в одной точке. Чем больше точек - тем лучше, но совместимость...
Где чего прибавится, то в другом месте убудет - глобальный закон.
карма: 6

0
Ответов: 9906
Рейтинг: 351
#78: 2016-04-02 14:14:57 ЛС | профиль | цитата
Хех...
Слова они и есть слова

Пока мне кажется, что вы склоняетесь к первому, изложенному мной ранее, варианту.
Меня, в принципе, больше беспокоит нерациональность анализа всей толпы файлов, если ищешь просто Папку.
Вот, смотрите коды (в аттаче).
Они относительно просты.
И, в отличие от слов - понимаются однозначно.
карма: 9

0
файлы: 1hifilesearch_new.rar [1.8KB] [298]
Разработчик
Ответов: 26149
Рейтинг: 2127
#79: 2016-04-02 14:59:39 ЛС | профиль | цитата
flint2 писал(а):
то на onSearch выдаются все папки, и прошедшие маску файлы

Вот тут я в корне не согласен. Сначала отбираем по Include, затем сверху накладываем маску, и без разницы -- файлы это или папки, все должно подвергаться отсеву на разные выходы. А вдруг мне понадобится найти только папку, удовлетворяющую маске, а мне на выход полезут все?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#80: 2016-04-02 15:43:21 ЛС | профиль | цитата
nesco писал(а):
А вдруг мне понадобится найти только папку, удовлетворяющую маске, а мне на выход полезут все?

По моему, он именно этого и хотел. Находить папку по маске. Вот здесь
flint2 писал(а):
Но было бы правильно при _prop_Include = Dirs и All директории тоже фильтровались


Говорю же: слова, они и есть слова
карма: 9

0
Ответов: 2059
Рейтинг: 132
#81: 2016-04-02 15:49:09 ЛС | профиль | цитата
nesco писал(а):
Вот тут я в корне не согласен. ...

Согласен.
А вдруг мне понадобится...

Ерунда это всё, и всё ерунда!
А вдруг мне понадобится...

Соломку подстилать - пустое дело.
Galkov писал(а):
Пока мне кажется, что вы склоняетесь к первому

Так точно! Если понимать, что я написал выше.
Но Карфаген должен быть разрушен!
procedure THIFileSearch._work_doInclude;
begin
_prop_Include :=Tointeger(_Data);
end;
P.s.

К теме не относится, но интересно.
К слову - в Index:word (procedure _..._....(....; Index:word);
места остались? Например для Include:byte, тра-та -та:поинт, ... все хотя бы стандартные.
Или битовая маска?
P.S.
Galkov писал(а):

flint2 писал(а)
Но было бы правильно при _prop_Include = Dirs и All директории тоже фильтровались

Говорю же: слова, они и есть слова

Моя не понимать! Код что-ли нужен?
Моя не понимать, почему бы не FileSearchEx? - и не каких напрягов.
Старое лечить - только калечить.
P.S.
Тема называется - FileSearch не хочет искать больше одного расширения.
Почему?
Компонент - лиха беда начало.
Почему только расширения по маске, а не папки и имена файлов и 'и'?
Почему нельзя сделать ... внешние установки чего ищешь - по дате(маска) , маске(имени, оно же расширение и папка)?
А сколько их там было верных и не верных файлов - это на любителя.
Тема- новые компоненты FileSearchEx.

карма: 6

0
Ответов: 9906
Рейтинг: 351
#82: 2016-04-03 14:30:57 ЛС | профиль | цитата
nesco, так ты посмотрел этот функционал
Или просто его не заметил ???
карма: 9

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#83: 2016-04-03 17:14:24 ЛС | профиль | цитата
Galkov писал(а):
так ты посмотрел этот функционал

Посмотрел, но в подробности пока не вдавался. На данный момент голова другим занята. Да и куча народа у нас, неужели некому потестировать?
карма: 22

0
Ответов: 2059
Рейтинг: 132
#84: 2016-04-04 00:57:03 ЛС | профиль | цитата
nesco писал(а):
неужели некому потестировать?

Всё замечательно!
Только непонятно, как переключать Files, Dirs и All.
Так удобнее http://forum.hiasm.net/forum_serv.php?q=56&id=4270
P.S.
Если точка Ext имеет соединение, но строка пуста, программа падает.
procedure THIFileSearchEx._work_doSearch;
var Dr,Ex:String;
begin
Dr := ReadString(_Data,_data_Dir,_prop_Dir);
Ex := ReadString(_Data,_data_Ext,_prop_Ext);
if Ex = '' then Ex :='*'; // Можно добавить, или if Ex = '' then exit;.
UniqueString(Ex);
FWorkExt.SetText(CharLower(PChar(Ex)), false);
.......
// if FWorkExt.Count = 0 then FWorkExt.Add('*'); // А это убрать.
карма: 6

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#85: 2016-04-04 15:23:48 ЛС | профиль | цитата
flint2 писал(а):
Если точка Ext имеет соединение, но строка пуста, программа падает.

Galkov, а почему

  CharLower(PChar(fn));
а не

  CharLower(@fn[1]);

Ведь последнее не вызывает падения
карма: 22

0
Ответов: 2059
Рейтинг: 132
#86: 2016-04-04 15:40:43 ЛС | профиль | цитата
nesco писал(а):

  CharLower(@fn[1]);
Ведь последнее не вызывает падения

Тоже падает.
карма: 6

0
Разработчик
Ответов: 26149
Рейтинг: 2127
#87: 2016-04-04 15:48:13 ЛС | профиль | цитата
flint2 писал(а):
Тоже падает

Да ладно, а у меня не падает. Давай схему, в которой он падает.
Этот метод применен в StrCase. посмотри, он у тебя падает с пустой строкой?
Да, а на каком компиляторе падает?
карма: 22

0
Ответов: 2059
Рейтинг: 132
#88: 2016-04-04 15:58:06 ЛС | профиль | цитата
code_37136.txt


code_37137.txt
С пустой строкой падает.
Компилятор Delphi(HiAsm).
На Delphi7 работает.
карма: 6

0
файлы: 2code_37136.txt [990B] [344], code_37137.txt [12.6KB] [853]
Разработчик
Ответов: 26149
Рейтинг: 2127
#89: 2016-04-04 16:09:26 ЛС | профиль | цитата
А вот этот код падает

Add(MainForm,2953706,77,119)
{
}
Add(InlineCode,4094146,140,175)
{
WorkPoints=#5:Lower|
EventPoints=#6:Result|
DataPoints=#3:Str|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses Windows,kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|11: Result,|19: Str: THI_Event;|51: procedure Lower(var _Data: TData; Index: word);|5: end;|0:|14:implementation|0:|28:procedure THiAsmClass.Lower;|3:var|13: st: string;|5:begin|31: st := ReadString(_Data, Str);|19: UniqueString(st);|44: _hi_onEvent(Result, CharLower(@st[1])); |4:end;|0:|4:end.|
link(Str,7462654:Text,[])
link(Result,12047234:doText,[])
}
Add(Edit,7462654,140,119)
{
Left=10
Top=10
Width=220
Text=""
}
Add(Edit,12047234,203,175)
{
Left=10
Top=35
Width=220
Text=""
}
Add(Button,9286840,77,175)
{
Left=90
Top=65
TabOrder=-1
link(onClick,4094146:Lower,[])
}

------------ Дoбавленo в 16.09:
flint2 писал(а):
С пустой строкой падает.

У меня не падает. Ты обе строки поменял?

  CharLower(@fn[1]);
...
FWorkExt.SetText(CharLower(@Ex[1]), false);


Я же просто пример привел, а не полные исправления кода
карма: 22

0
Ответов: 2059
Рейтинг: 132
#90: 2016-04-04 16:09:43 ЛС | профиль | цитата
nesco писал(а):
. Ты обе строки поменял?

Каюсь - грешен.
Всё работает.

карма: 6

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)