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 

[wlx/wdx] TCMediaInfo
Goto page Previous  1, 2, 3 ... 56, 57, 58 ... 66, 67, 68  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Loopback



Joined: 07 Sep 2009
Posts: 1554

Post (Separately) Posted: Mon Jul 29, 2024 15:05    Post subject: Reply with quote

Destiny wrote:
Вы тогда для WLX вариации плагина сможете подключить поддержку действий для
нажатых клавиш?

Можно добавлять горячие клавиши, если есть какая-то необходимость.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 367

Post (Separately) Posted: Wed Sep 18, 2024 11:26    Post subject: Reply with quote

Здравствуйте. Плагин в режиме показа длительности проигрывания hh:mm:ss секунды показывает без округления. Насколько я понимаю, это можно исправить скриптом. Как правильно записать этот скрипт и можно-ли это сделать в оф версии плагина?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1554

Post (Separately) Posted: Wed Sep 18, 2024 12:41    Post subject: Reply with quote

День добрый.

А почему он вообще должен секунды округлять? И до чего округлять?

Да, и "режим показа длительности" - это же wdx-колонка имеется в виду или что?
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 367

Post (Separately) Posted: Thu Sep 19, 2024 07:50    Post subject: Reply with quote

Округлять миллисекунды до секунд при формате без миллисекунд. То-есть если длительность миллисекунд более 500, то при показе без миллисекунд, секунды должны округляться, по правилам математики, в большую сторону. Я не мог понять, почему длительность при сравнении с anytag.wdx отличается на 1 сек. Выбрал формат с миллисекундами и все стало ясно. Плагин миллисекунды просто отбрасывает при показе секунд в формате без миллисекунд, а должен учитывать.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1554

Post (Separately) Posted: Thu Sep 19, 2024 13:02    Post subject: Reply with quote

Теперь ясно. Да, это баг в функции TimingFormat.

Вот исправленная версия.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 367

Post (Separately) Posted: Thu Sep 19, 2024 15:45    Post subject: Reply with quote

Спасибо большое. Совсем другое дело.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1554

Post (Separately) Posted: Fri Sep 20, 2024 01:34    Post subject: Reply with quote

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

Версия от 20.09.24
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 367

Post (Separately) Posted: Fri Sep 20, 2024 06:14    Post subject: Reply with quote

Loopback wrote:
Недоглядел в предыдущей версии, округление неправильно работало при граничных значениях немного меньших 500мс.

Обратил внимание, но тревожить уже не стал Embarassed
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 367

Post (Separately) Posted: Sun Sep 22, 2024 12:54    Post subject: Reply with quote

Я извиняюсь, но если возможно, просил-бы вас переделать и скрипты продолжительности:
<column name="Duration">
<unit name="hh:mm:ss" type="script">Output:=TimingFormat('%hh:%mm:%ss', Duration);</unit>
<unit name="hh:mm:ss.fff" type="script">Output:=TimingFormat('%hh:%mm:%ss.%fff', Duration);</unit>
<unit name="s" type="script">Output:=Trunc(Duration/1000);</unit>
<unit name="z">Duration</unit>
<unit name="Custom" type="script">
<![CDATA[
// this is an example of using scripts in columns
Output:='';
if Not StrIsNumber(Duration) then Exit;
nDur := Number(Duration);
Hour:=Trunc(nDur/3600000);
Min:=Trunc((nDur-Hour*3600000)/60000);
Sec:=Trunc((nDur-Hour*3600000-Min*60000)/1000);
if (Hour <> 0) then Output:=String(Hour)+' hr ';
if (Min <> 0) then Output:=Output+String(Min) +' min ';
if (Sec <> 0) then Output:=Output+String(Sec) +' sec ';
]]>
</unit>
</column>
А то получается стандартные форматы показывает правильно, а скрипты неправильно. Понятно, что вы можете сказать, исправьте это сами. Но лично мне не понятно, можно-ли вообще написать скрипт с правильным алгоритмом.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1554

Post (Separately) Posted: Sun Sep 22, 2024 17:35    Post subject: Reply with quote

В принципе эти скрипты сделаны для демонстрации и практической пользы не имеют.

Ок, вот вариант учитывающий округление:

Code:

         <unit name="s" type="script">SF:=Number(Duration)/1000;Output:=Integer(SF) + Round(Frac(SF));</unit>
         <unit name="z">Duration</unit>
         <unit name="Custom" type="script">
         <![CDATA[
            // this is an example of using scripts in columns
            Output:='';
            if Not StrIsNumber(Duration) then Exit;

            SF:=Number(Duration)/1000;

            // whole seconds + rounded MS
            Sec:=Integer(SF) + Round(Frac(SF));

            Min:=Integer(Sec/60);
            Sec:=Sec-Min*60;
            Hour:=Integer(Min/60);
            Min:=Min-Hour*60;
            
            if (Hour <> 0) then Output:=String(Hour)+' hr ';
            if  (Min <> 0) then Output:=Output+String(Min) +' min ';
            if  (Sec <> 0) then Output:=Output+String(Sec) +' sec ';
         ]]>
         </unit>
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 367

Post (Separately) Posted: Sun Sep 22, 2024 18:58    Post subject: Reply with quote

Loopback wrote:
В принципе эти скрипты сделаны для демонстрации и практической пользы не имеют.

Ну да, это понятно.
Loopback wrote:

Ок, вот вариант учитывающий округление:

Спасибо большое.
У нас на руборде разгорелся жесточайший спор об округлении до секунд продолжительности типа 02:36,499. Я считаю, что правильно как у вас сейчас 02:37. Также в плагине anytag.wdx. Но в некоторых плагинах 02:36. Вот теперь можно по формуле пересчитать, сколько-же получится.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1554

Post (Separately) Posted: Sun Sep 22, 2024 19:57    Post subject: Reply with quote

Плагин округляет самым распространенным методом "до ближайшего целого": если дробная часть меньше 0.5 - то в минус, если больше или равно 0.5 - в плюс. Значение 02:36,499 по этому методу округляется до 02:36, я не знаю откуда взялось 2:37.

Миллисекунда - это тысячная доля секунды, поэтому число секунд представляем как десятичную дробь 156.499. Округление этого числа до целого даст 156 -> 02:36.

К слову с кодом перемудрил, всё еще проще, отделять дробную часть вообще ни к чему:

Code:

         <unit name="s" type="script">Output:=Round(Number(Duration)/1000);</unit>
         <unit name="z">Duration</unit>
         <unit name="Custom" type="script">
         <![CDATA[
            // this is an example of using scripts in columns
            Output:='';
            if Not StrIsNumber(Duration) then Exit;

            Sec:=Round(Number(Duration)/1000);

            Min:=Integer(Sec/60);
            Sec:=Sec-Min*60;
            Hour:=Integer(Min/60);
            Min:=Min-Hour*60;
           
            if (Hour <> 0) then Output:=String(Hour)+' hr ';
            if  (Min <> 0) then Output:=Output+String(Min) +' min ';
            if  (Sec <> 0) then Output:=Output+String(Sec) +' sec ';
         ]]>
         </unit>


Но тут, конечно, многое зависит от предпочтений, округлять можно вверх, вниз (как по-сути и было раньше), банковский вариант и еще всякая экзотика, но во всех языках с которыми я работаю округление идет по этому правилу.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 367

Post (Separately) Posted: Sun Sep 22, 2024 20:04    Post subject: Reply with quote

Проверил первый вариант. По нему получается 02:36. А стандартный вывод в плагине выдает 02:37. Сейчас второй вариант проверю.

Добавлено спустя 8 минут:

И по второму варианту получилось 2:36. А не могли-бы вы внести изменения в плагин, чтобы стандартные форматы, формируемые плагином, соответствовали скриптам?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1554

Post (Separately) Posted: Sun Sep 22, 2024 20:53    Post subject: Reply with quote

AkulaBig
У меня выдает 2:36. Версия от 20 сентября, MediaInfo 24.06, единицы кроме пользовательского скрипта без изменений.

Code:

<unit name="hh:mm:ss" type="script">Output:=TimingFormat('%hh:%mm:%ss', Duration);</unit>
<unit name="hh:mm:ss.fff" type="script">Output:=TimingFormat('%hh:%mm:%ss.%fff', Duration);</unit>
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 367

Post (Separately) Posted: Sun Sep 22, 2024 21:08    Post subject: Reply with quote

Блин, извиняюсь. Мой косяк. Я потестил исправления от 20.09, а сборку собрал с изменениями от 19.09. Все отлично. Спасибо большое.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 56, 57, 58 ... 66, 67, 68  Next
Page 57 of 68

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group