Страница 1 из 1

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

Добавлено: Сб мар 21, 2020 16:59
gryja
Я извиняюсь, что пишу это сообщение здесь, но мне посоветовали.

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

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

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

Данная ошибка есть на всех версиях Total Commander, начиная с восьмой.

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

Добавлено: Ср апр 22, 2020 14:21
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

SortUpper=1

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

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

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

Добавлено: Чт июн 24, 2021 07:15
Вахмурка
2gryja
Почему бы тебе не обратиться к разработчику напрямую? Кроме него, ошибки в программе никто не исправит :D

Добавлено: Чт июн 24, 2021 16:10
gryja
Вот так вот, значит... Спасибо, что хотя бы предупредили... [mod="Моторокер"]Флуд почистил[/mod]