Копирование папок из WFX плагина

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

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

Ответить
Аватара пользователя
featZima
Сообщения: 4
Зарегистрирован: Пн дек 07, 2009 13:18

Копирование папок из WFX плагина

Сообщение featZima »

Проблема состоит в следующем. В первый раз в функцию FsGetFile тотал передаёт нормальное локальное имя файла, а в последующие разы уже испорченное, подскажите, почему так может быть?*

1-ый раз: http://floomby.ru/content/hug1OoMem0/
2-ой раз: http://floomby.ru/content/dsPglKZXCE/
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

featZima
А по какой причине функция вызывается второй раз?
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
featZima
Сообщения: 4
Зарегистрирован: Пн дек 07, 2009 13:18

Сообщение featZima »

1. Если копировать файлы, для каждого ручками нажимая F5 - всё нормально
2. Если копировать файлы, выделив несколько и нажав F5 - всё нормально
3. Если копировать папку (или папки) в которых есть эти файлы - для первого файла функция вызывается с нормальными параметрами, для остальных с испорченными...
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Не подтверждаю. Сейчас создал у себя в плагине простейшую функцию FsGetFileW (С++):

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

int __stdcall FsGetFileW(WCHAR* RemoteName, WCHAR* LocalName, int CopyFlags, RemoteInfoStruct* ri)
{
	if (theApp.ProgressProcW(theApp.PluginNr, LocalName, RemoteName, 0) == 1)
		return FS_FILE_USERABORT;
	theApp.ProgressProcW(theApp.PluginNr, LocalName, RemoteName, 100);
	return FS_FILE_OK;
}
В плагине создал папку с десятком файлов и подпапкой, в которой ещё пара файлов, вызвал копирование — все имена пришли в функцию в нормальном виде.

Подозреваю, что где-то в коде плагина происходит порча данных, на которые опирается Тотал.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
featZima
Сообщения: 4
Зарегистрирован: Пн дек 07, 2009 13:18

Сообщение featZima »

Стоп) Большой спасибо, за помощь! Но с юникодным вариантом и у меня всё нормально... Проблема как раз в Ansi варианте... Про то, что плагин портит данные, не думаю -- убрал всё из функций (результат тотже)...
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Ну с ANSI сложнее. У меня этот плагин исключительно юникодный… Попробовал сейчас вместо FsGetFileW воткнуть FsGetFile с соответствующими модификациями, точно так же корректно всё работает, но не исключено, что общая юникодность плагина сказывается.

Идей больше не имею. Попробуй создать с нуля минимальный проект FS-плагина, где все функции — пустые заглушки, ну и чуть-чуть захардкоденных строк, чтобы список файлов непустой был, и на нём уже проверить поведение функции. Если и там баг воспроизведётся, то выложи этот мини-проектик на всеобщее обозрение. А то ни воспроизвести, ни проверить… У меня, правда, дельфей нет, так что поучаствовать смогу только методом пристального взгляда, но тут дельфистов немало обитает, авось помогут в поиске и отладке.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Ответить