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

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

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

1-ый раз: http://floomby.ru/content/hug1OoMem0/
2-ой раз: http://floomby.ru/content/dsPglKZXCE/

Добавлено: Пн дек 07, 2009 16:47
CaptainFlint
featZima
А по какой причине функция вызывается второй раз?

Добавлено: Пн дек 07, 2009 22:55
featZima
1. Если копировать файлы, для каждого ручками нажимая F5 - всё нормально
2. Если копировать файлы, выделив несколько и нажав F5 - всё нормально
3. Если копировать папку (или папки) в которых есть эти файлы - для первого файла функция вызывается с нормальными параметрами, для остальных с испорченными...

Добавлено: Вт дек 08, 2009 01:50
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;
}
В плагине создал папку с десятком файлов и подпапкой, в которой ещё пара файлов, вызвал копирование — все имена пришли в функцию в нормальном виде.

Подозреваю, что где-то в коде плагина происходит порча данных, на которые опирается Тотал.

Добавлено: Вт дек 08, 2009 01:55
featZima
Стоп) Большой спасибо, за помощь! Но с юникодным вариантом и у меня всё нормально... Проблема как раз в Ansi варианте... Про то, что плагин портит данные, не думаю -- убрал всё из функций (результат тотже)...

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

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