Ошибки программы Total Commander при работе с плагинами

Только для тех, кто пишет плагины под Total Commander. Обмен опытом, решение проблем.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Ответить
gryja
Сообщения: 13
Зарегистрирован: Вс ноя 20, 2016 23:43

Ошибки программы Total Commander при работе с плагинами

Сообщение gryja »

Я извиняюсь, что пишу это сообщение здесь, но мне посоветовали.

Здравствуйте. Пишу WDX-плагин, точнее, уже написал. Всё время думал, что у меня какая-то ошибка, я чего-то не понимаю - плагин периодически вёл себя не так, как нужно. На глюки тотала я не пенял. Но вчера полностью убедился. При поиске дубликатов при помощи WDX-плагина тотал выдаёт не все результаты. Это - точно. Вот что я написал в описании своего плагина: "При сравнении (точнее - при поиске) 4-х файлов с разной кодировкой, но одинаковым исходным хэшем ("Строка необработанных данных"), а также при наличии 5-го - "другого", на некоторых коэффициентах усреднения один из файлов "выкидывался" из группы дублей. При удалении 5-го, "другого" файла дубли "опять становятся" дублями."

Вот ссылка на плагин: https://yadi.sk/d/aQFqheQaO_2iEA

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

Данная ошибка есть на всех версиях Total Commander, начиная с восьмой.
gryja
Сообщения: 13
Зарегистрирован: Вс ноя 20, 2016 23:43

Дополнение к теме

Сообщение gryja »

Хочу прибавить ясности.

Компилируем данный код в Лазарусе (Lazarus) -> dll:

Код: Выделить всё

Library TestForError;

{$EXTENSION 'wdx'}

Uses
SysUtils;

{=================================}
Function ContentGetSupportedField(FieldIndex: Integer; FieldName: PChar; Units: PChar; MaxLen: Integer): Integer; StdCall;
Begin
   If FieldIndex > 100 Then
      Result := 0
   Else
   Begin
      If FieldIndex = 0 Then StrPCopy(FieldName, 'Строка необработанных данных');
      If FieldIndex = 1 Then StrPCopy(FieldName, 'Отсортированный массив данных');
      If FieldIndex > 1 Then StrPCopy(FieldName, 'Усреднение значений на ' + IntToStr(FieldIndex - 1));
      Result := 8;
   End;
End;
{=================================}
Function ContentGetValue(FilePath: PChar; FieldIndex, UnitIndex: Integer; FieldValue: PChar; MaxLen, Flags: Integer): Integer; StdCall;

Var
HashString: String = '';

Begin

Result := 8;

HashString := '0003060U101L1R202F2O';
If ExtractFileExt(FilePath) = '.txt' Then HashString := '0003060X101L1O232F2R';

StrPCopy(FieldValue, HashString);

End;
{=================================}
Exports
   ContentGetValue,
   ContentGetSupportedField;
{=================================}
End.
Подключаем получившийся плагин к Total Commander.

Затем создаём папку на рабочем столе, а в этой папке - 5 пустых файлов с именами: 1.htm, 2.htm, 3.htm, 4.htm, 5.txt

Если бы Total Commander работал правильно, то при поиске дубликатов с применением данного WDX-плагина он выдал бы в качестве результатов 4 htm-файла. Ан нет. Только три.

Архив с исходником и тестовыми файлами: https://yadi.sk/d/IZTk2y_3NZt_Hg
gryja
Сообщения: 13
Зарегистрирован: Вс ноя 20, 2016 23:43

SortUpper=1

Сообщение gryja »

При работе ключа SortUpper=1 в секции [Configuration] данная ошибка присутствует. При значениях 0, 2 и 3 - ошибка отсутствует.

Я, конечно, понимаю, что можно предварительно выставлять нужный ключ для нормальной работы плагина, но хотелось бы стабильности: кто знает, может быть и с другими ключами плагин работает неверно, просто ошибку не удаётся засечь.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Re: Ошибки программы Total Commander при работе с плагинами

Сообщение Вахмурка »

2gryja
Почему бы тебе не обратиться к разработчику напрямую? Кроме него, ошибки в программе никто не исправит :D
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
gryja
Сообщения: 13
Зарегистрирован: Вс ноя 20, 2016 23:43

Сообщение gryja »

Вот так вот, значит... Спасибо, что хотя бы предупредили... [mod="Моторокер"]Флуд почистил[/mod]
Ответить