Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Autorun 
Author Message
A55555



PostPosted: Sun Sep 28, 2025 23:15    Post subject: Reply with quote

Orion9 wrote:
A55555
Я поторопился, когда сказал, что с результатами от Everything ничего не поделаешь. Функция поиска Autorun может получать отсортированный результат:
 FileFindEv

Да, крутую вещь сделал Loopback. А я на первых порах и не заметил.

В общем, вам нужно заменить всего одну строку:
Code:
found = FileFindEv("size:" & gTorrentSize, "", "")

На:
Code:
found = FileFindEv("size:" & gTorrentSize, "", "sort:3")

Этого должно хватить, чтобы самый верхний каталог в структуре пустых каталогов стоял первым в списке результатов.

Спасибо, работает. Этим буду пользоваться вариантом.

Этот способ тоже сработал.
Orion9 wrote:
Кстати, я вчера уже не на свежую голову написал, что такой код сработает:
Code:
If bEverything And StrPos(FileGetAttr(Target), "D") Then SendCommand(2002)

Но он не сработает, потому что переменная bEverything действует только в рамках функции TorrentFindData, а вызов происходит из функции GoToPathFromMsg. Чтобы все заработало, в функции TorrentFindData необходимо заменить строку "Local bEverything = nMode" на "Global bEverything = nMode". Тогда переменная станет глобальной и доступной другим функциям.


Orion9 wrote:
Касаемо замены. Конечно, лучше сделать отдельный файл и дополнительный алгоритм, но на первое время можете попробовать прямо в код прописать условие для замены сразу после строчки:
Code:
gHintPipe = DllCall(pInfo, 'Ptr', hMI, "Uint", 0, "Wstr")
If StrPos(sMode, "hint.txt") Then
   gHintPipe = StrReplace(gHintPipe, "DTS HD Master Audio", "DTS-HD MA")
   gHintPipe = StrReplace(gHintPipe, "Dolby Digital", "DD")           
EndIf       
If Not bLang Then gHintPipe = StrReplace(gHintPipe, Chr(32), Chr(160))

Но важное уточнение. Если будете менять вот такие строки:
Code:
Audio #3: 6ch, 48.0 kHz, 768 kb/s (CBR), E-AC-3, Dolby Digital Plus with Dolby Atmos, fr, 31.250 FPS (1536 SPF)

То длинные строки для замены должны идти после коротких, чтобы избежать возможной замены подстрок, иначе может получится такая замена:
Code:
DD Plus with Dolby Atmos

Чтобы этого не произошло, порядок должен быть такой:
Code:
If StrPos(sMode, "hint.txt") Then
   gHintPipe = StrReplace(gHintPipe, "DTS HD Master Audio", "DTS-HD MA")
   gHintPipe = StrReplace(gHintPipe, "Dolby Digital Plus with Dolby Atmos", "DD+Atmos")       
   gHintPipe = StrReplace(gHintPipe, "Dolby Digital", "DD")           
EndIf

Если замены себя оправдают и вам понравится, то можно будет подумать над файлом, где хранить такие замены, чтобы не было необходимости в код жестко прописывать.

Спасибо, работает.
Получается прописывание в том порядке, который вы подсказываете обязательно, т.к. если не указано ничего в фрагменте кода, например для
Code:
Dolby Digital Plus

то оно всё равно его переделает на
Code:
DD Plus

Но в любом случае мне и такой вариант подходит на 99%
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group