View Issue Details

IDProjectCategoryView StatusLast Update
0000537Far Manager 1.7xMacropublic2008-06-08 22:55
ReporterHaRT Assigned Tovskirdin  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version1.71 
Fixed in Version1.71 
Summary0000537: Menu.Select не позиционирует на Folders в меню фильтров
DescriptionВызываем макросы из файловой панели:

Этот работает, как и ожидается:
CtrlI Menu.Select ( "Panel file type", MENUSELECT_MATCH_HEAD )

А вот этот не позиционирует:
CtrlI Menu.Select ( "Folders", MENUSELECT_MATCH_HEAD )
TagsNo tags attached.
Build2364

Activities

DrKnS

2008-05-22 04:20

administrator   bugnote:0001509

У меня работают оба варианта.

HaRT

2008-05-22 04:29

reporter   bugnote:0001510

> У меня работают оба варианта.
На какой сборке?

DrKnS

2008-05-22 04:35

administrator   bugnote:0001511

На идентичной.

HaRT

2008-05-22 04:37

reporter   bugnote:0001512

> На идентичной.
Прискорбно, я тщательно перепроверил.
Подождём, воспроизведётся ли у Валентина.
Интересно, что на это может влиять.

HaRT

2008-05-22 06:52

reporter   bugnote:0001514

Я разобрался.
У меня первым в списке идёт фильтр "SVN folders", а возвращаемое значение, как видно из макроса, я не проверял. Ошибка в Фаре состоит в том, что Menu.Select при ненулевом втором параметре ищет вхождение в ЛЮБОМ месте строки, а не в начале/ конце, как это следует из документации.

Предлагаю привести поведение функции в соответствие с документацией, а также добавить ещё одно значение (3) для второго параметра, означающее "искать в любом месте строки".

vskirdin

2008-05-22 08:03

administrator   bugnote:0001515

Хмм... не вижу ошибки.
В коде вот такое:

switch(iParam)
{
  case 0: // full compare
    Res=StrCmpI(strTemp,str)==0;
    break;
  case 1: // begin compare
    Res=StrStrI(strTemp,str)!=NULL;
    break;
  case 2: // end compare
    Res=RevStrStrI(strTemp,str)!=NULL;
    break;
}

Здесь (с игнорированием регистра букв):
StrCmpI - полное совпадение
StrStrI - ищет подстроку, начиная с начала входной строки (приближаясь к концу строки)
RevStrStrI - ищет подстроку, начиная с конца входной строки (приближаясь к началу строки)

Если сделать второй параметр == 3, то это будет MENUSELECT_MATCH_PATTERN - те самые паттерны, которые масками файлов обзываются.
Делать?

alexy

2008-05-23 00:35

administrator   bugnote:0001517

Валя, а вот ты можешь мне объяснить какая логическая разница между 1 и 2?

alexy

2008-05-23 01:00

administrator   bugnote:0001518

Last edited: 2008-05-23 01:00

Короче надо вот такое:
char *p;
switch(iParam)
{
  case 0: // full compare
    Res=StrCmpI(strTemp,str)==0;
    break;
  case 1: // begin compare
    p=StrStrI(strTemp,str);
    Res=p==strTemp;
    break;
  case 2: // end compare
    p=RevStrStrI(strTemp,str);
    Res=p!=NULL && *(p+StrLength(str)) == 0;
    break;
  case 3:
    Res=StrStrI(strTemp,str)!=NULL;
    break;
}

HaRT

2008-05-23 02:10

reporter   bugnote:0001519

> это будет MENUSELECT_MATCH_PATTERN - те самые паттерны, которые масками файлов обзываются.
> Делать?
Да, иногда было бы полезно. Предлагаю, чтобы это было при N=4.

vskirdin

2008-05-23 06:14

administrator   bugnote:0001523

Хмм... вот только для паттерна будет заюзана CmpName со всеми вытекающими (в коде CmpName_Body видно...)
Так что... вот и подумалось - а стоит ли сейчас 4-й пункт делать? :-)

vskirdin

2008-05-23 12:01

administrator   bugnote:0001524

после 2364/486 без паттернов

HaRT

2008-06-06 02:37

reporter   bugnote:0001557

Проверено на сборке 2368

Issue History

Date Modified Username Field Change
2008-05-22 04:10 HaRT New Issue
2008-05-22 04:10 HaRT Status new => assigned
2008-05-22 04:10 HaRT Assigned To => vskirdin
2008-05-22 04:20 DrKnS Note Added: 0001509
2008-05-22 04:29 HaRT Note Added: 0001510
2008-05-22 04:35 DrKnS Note Added: 0001511
2008-05-22 04:37 HaRT Note Added: 0001512
2008-05-22 06:52 HaRT Note Added: 0001514
2008-05-22 08:03 vskirdin Note Added: 0001515
2008-05-23 00:35 alexy Note Added: 0001517
2008-05-23 01:00 alexy Note Added: 0001518
2008-05-23 01:00 alexy Note Edited: 0001518
2008-05-23 02:10 HaRT Note Added: 0001519
2008-05-23 06:14 vskirdin Note Added: 0001523
2008-05-23 12:01 vskirdin Note Added: 0001524
2008-05-23 12:01 vskirdin Status assigned => feedback
2008-06-06 02:37 HaRT Status feedback => resolved
2008-06-06 02:37 HaRT Resolution open => fixed
2008-06-06 02:37 HaRT Note Added: 0001557
2008-06-08 22:54 alexy Build => 2364
2008-06-08 22:54 alexy Status resolved => closed
2008-06-08 22:55 alexy Fixed in Version => 1.71