Архиваторный плагин на Delphi
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Написание плагинов для Total Commander

#1: Архиваторный плагин на Delphi Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Fri Jul 14, 2006 14:28
    —
Пытаюсь освоить написание архиваторного плагина на Delphi. Скачал кучу исходников, разбираюсь. Нужна только упаковка.

Добавил все нужные функции, поставил в них заглушки типа ShowMessage, т.е. написал плагин, который ничего не делает.
Установил на расширение «jpg_».
Пытаюсь упаковать файл, появляется сообщение «Ошибка при упаковке».
Проверяю через wcxtest.exe – показывает список всех функций, показывает мой ShowMessage на GetPackerCaps, где Result:= PK_CAPS_NEW; (хочу только паковать).
TC Plugins Manager тоже показывает это сообщение перед вызовом параметров и после. Стоит только галочка «Может создавать архивы», как мне и надо.

Почему ни один из других ShowMessage в Total нигде не показан?
Что я делаю не так?
Где ещё можно найти примеры простых арх. плагинов на Delphi, хотя бы типа DiskDir?

Добавил возможность править Result:= PK_CAPS_NEW or PK_CAPS_MODIFY; так же


Last edited by Моторокер on Fri Jul 14, 2006 14:41; edited 1 time in total

#2:  Author: Lamer PostPosted: Fri Jul 14, 2006 14:35
    —
Так ведь ТС по ходу упаковки от плагина только прогресс запрашивает?! Или я не прав?
Ну с простыми как раз туговато,а вот сырцы 7zipа посмотреть познавательно.

#3:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Fri Jul 14, 2006 14:47
    —
Какой прогресс?
На PackFiles не показан ShowMessage.

#4:  Author: Lamer PostPosted: Fri Jul 14, 2006 15:23
    —
Прогресс процесса упаковки,по которому Тотал ведёт progressbar.
А то,что "На PackFiles не показан ShowMessage.", я понял.ИМХО это неудивительно.Это же не листер-плагин.Тотал из его кишок почти ничего не запрашивает и почти ничего не отображает(диалог настроек да,но это не наш случай). Он просто получает успешное/неуспешное завершение упаковки от плагина и даёт свой messagebox при ошибке,а не плагинские.
Могу и ошибаться конечно.Последний раз плагиновое API конкретно для архиваторных смотрел где-то полгода назад.

#5:  Author: fundukLocation: Санкт-Петербург PostPosted: Fri Jul 14, 2006 23:12
    —
2Lamer
Перед упаковкой может вызываться диалог настроек насильно. Смотри плагин wipe, например.

#6:  Author: Lamer PostPosted: Fri Jul 14, 2006 23:41
    —
funduk wrote:
2Lamer
Перед упаковкой может вызываться диалог настроек насильно. Смотри плагин wipe, например.

Самим плагином. С этим я спорить и не собираюсь.Но повторяю: это не наш случай. Т.е. Моторокер до диалога настроек ещё не добрался. У него там пока заглушки.

#7:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Mon Jul 17, 2006 07:10
    —
Русский неполный незавершённый перевод «Написание WCX архиваторных плагинов»
http://motorocker.nm.ru/download/wcx_writer_s_reference.rus.rar (23 Kb)

Сам же и виноват – не включил обязательные SetProcessDataProc и SetChangeVolProc. Хорошо бы wcxtest.exe ругался на это.
Продолжаю разбираться дальше.


Last edited by Моторокер on Fri Jul 21, 2006 14:28; edited 1 time in total

#8:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Mon Jul 17, 2006 12:16
    —
Статья Архиваторный плагин на Borland Delphi
Также
Writing WCX packer plugins for Total Commander wrote:
SubPath – либо NULL, если файлы должны быть упакованы с путями, которые передаются в именах файлов, либо not NULL, когда они должны быть помещены ниже placed below данного подкаталога в архиве. Пример:

SubPath="подкаталог"
Имя в AddList=" подкаталог2\filename.ext"
-> Файл должен быть упакован как "подкаталог\подкаталог2\filename.ext"

Этот момент не понял. Что, куда, где, когда передаётся? Это Total как-то передаёт? Или пользователь галочку ставит?
Это галочка «Отдельные архивы для каждого выбранного файла/каталога»?


Last edited by Моторокер on Thu Jul 20, 2006 11:56; edited 1 time in total

#9:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Tue Jul 18, 2006 08:26
    —
понял, SubPath – это открытая папка в архиве, в которую и нужно паковать, т.е.
FileName:= SubPath + SrcPath + AddList[i]
Спасибо Олегу Бондарю, автору wcxtest

#10:  Author: VolniyLocation: Местный PostPosted: Tue Jul 18, 2006 22:27
    —
Моторокер wrote:
Русский неполный незавершённый перевод «Написание WCX архиваторных плагинов»

Мои 5 копеек в перевод:

you need to implement - вы должны реализовать...

STDCALL calling convention - соглашение о связях STDCALL

can be implemented to support archives - может быть реализована для поддержки архивов...

if this function is not implemented, Totalcmd assumes - если эта функция не реализована, Totalcmd подразумевает..

is passed to - передается в ...

Suggested location+name of the ini file - предлагаемое расположение+имя ini-файла

reflecting the user choice - отражающий выбор пользователя

currently - на данный момент / в настоящее время

...in this file, because it is shared by other file system plugins! -
... в этом файле, потому что он одновременно используется и другими плагинами!..

Using this, you should be able to find out information
Используя это, вы будете иметь возможность узнать информацию

In short, you are supposed to set at least - короче говоря, предполагается что вы по крайней мере установите...

#11:  Author: fundukLocation: Санкт-Петербург PostPosted: Tue Jul 18, 2006 22:40
    —
Volniy wrote:
STDCALL calling convention - соглашение о связях STDCALL
Какие связи? Shocked STDCall - это вроде протокол вызова процедур... Хотя мож по-русски так и устоялось...

assume=предполагать

Quote:
...in this file, because it is shared by other file system plugins! -
... в этом файле, потому что он одновременно используется и другими плагинами!..
Тогда уж другими плагинами файловой системы?

In short, you are supposed to set at least - короче говоря, предполагается что вы установите по крайней мере...

Rolling Eyes Rolling Eyes Rolling Eyes Embarassed Embarassed Embarassed

#12:  Author: VolniyLocation: Местный PostPosted: Wed Jul 19, 2006 00:51
    —
funduk wrote:
Какие связи? Shocked STDCall - это вроде протокол вызова процедур... Хотя мож по-русски так и устоялось...

Именно формулировку "соглашение о связях" встречал в очень серьезных книгах (не "C++ за 14 дней" Smile ). Допускаю, что есть и другие варианты.

funduk wrote:
assume=предполагать

Ну нету никаких знаков равенства между английскими и русскими словами. В зависимости от контекста и пр. это слово может иметь одно из следующих значений: принимать, присваивать, напускать на себя; притворяться; симулировать, предпринимать и еще много чего.
Я-то, кстати, выбрал именно предполагать

Ты, это, ты не меня поправляй Laughing Там еще статья-то почти на треть не переведена. Приложись по молодецки...

#13:  Author: fundukLocation: Санкт-Петербург PostPosted: Wed Jul 19, 2006 01:14
    —
Ну не знаю. Нам __cdecl на САКОДе рассказывали долго и нудно, а про stdcall - только то и упоминули как отличие от __cdecl, что вызываемая функция очищает стек по своему завершению (в то время как в __cdecl стек с переданными параметрами очищает сама программа).
Так что "связи"? Хз что в виду имеется... Ладно уж... Пишут - примем Smile

P.S.1: знаки равенства иногда есть и это тот самый случай. Меня поддерживает PROMT.
P.S.2: я больше тестер, чем прогер Smile Мне исправлять больше нравится Very Happy

#14:  Author: mramorLocation: г. волжский, снг PostPosted: Wed Jul 19, 2006 01:17
    —
Volniy wrote:
соглашение о связях STDCALL


funduk wrote:
Какие связи? STDCall - это вроде протокол вызова процедур... Хотя мож по-русски так и устоялось...


по-русски устоялось соглашение о вызове.

#15:  Author: fundukLocation: Санкт-Петербург PostPosted: Wed Jul 19, 2006 01:24
    —
Во! Теперь похоже Smile



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


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

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group