Программы, плагины, статьи от Моторокера

Новости
Статьи
Программы
Ссылки
Автор

Архиваторный плагин для Total Commander на Delphi

Пример 1. Пишем простой архиваторный плагин

Плагин создает текстовый файл («архив») со списком файлов. Вся обработка происходит в функции DoPack.

Паковать прямо в функции PackFiles не получилось – из Delphi всё работает нормально, но при упаковке из Total Commander программа просто тихо закрывается, не выводя никаких сообщений.

function PackFiles(PackedFile, SubPath, SrcPath, AddList: PChar;
  Flags: integer): integer; stdcall;
begin
  Result:= DoPack(PackedFile, SrcPath, AddList);
end;

Функция обрабатывает минимум возможных ошибок. Путь к файлу в архиве SubPath не нужен, поэтому строка игнорируется. Обратите внимание: в AddList передаются не только имена файлов с папками, но и имена этих папок отдельно – вы можете написать плагин только для копирования структуры папок.

Для использования функции FileExists добавьте в uses SysUtils. Если в плагине нет диалога настройки, лучше скопируйте саму функцию из SysUtils, чтобы не тянуть за собой весь код SysUtils.

// функция "упаковки"
function DoPack(PackedFile, SrcPath: string; S: PChar): integer;
var
  p: PChar;
  f: TextFile;
  FileName: string;
begin
  // файл "архива" существует, изменять его не можем,
  // можем только создавать новые
  if FileExists(PackedFile) then begin
    Result:= E_NOT_SUPPORTED; // Функция не поддерживается
    Exit;
  end;

  AssignFile(f, PackedFile);
  try
    Rewrite(f); // попробуем открыть файл для записи
  except
    Result:= E_ECREATE; // Невозможно создать файл
    Exit;
  end;

  // просматриваем все имена файлов
  p:= S;
  while Length(p) > 0 do begin
    FileName:= SrcPath + string(p);
    WriteLn(f, FileName); // В этой строке можно написать
                          // любой обработчик для файла
    p:= PChar(DWORD(p) + Length(p) + 1);
  end;

  Flush(f);
  CloseFile(f);

  Result:= E_SUCCESS; // Выполнено успешно
end;

Плагин готов, можно исправить файл Read_me.txt и распространять за деньги ;). Плагин ещё не умеет показывать индикатор выполнения, да и показывать пока нечего – Total Commander дольше папки сканирует, чем работает плагин. Также нельзя прервать работу плагина.

Скачать пример простого плагина на Delphi (rar, 26 Kb). Для установки зарегистрируйте плагин на любое придуманное расширение, например LST2.

<< Назад | Оглавление | Дальше >>
Установка плагинов в Total Commander


© 2006–2011 Моторокер Плагины для Total Commander