Ошибки программы Total Commander при работе с плагинами
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Написание плагинов для Total Commander

#1: Ошибки программы Total Commander при работе с плагинами Author: gryja PostPosted: Sat Mar 21, 2020 17:58
    —
Я извиняюсь, что пишу это сообщение здесь, но мне посоветовали.

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

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

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

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

#2: Дополнение к теме Author: gryja PostPosted: Wed Apr 22, 2020 15:21
    —
Хочу прибавить ясности.

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

Code:
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



Total Commander -> Написание плагинов для Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group