[wlx] csvtab - просмотр CSV файлов

Обсуждение только плагинов и утилит для Total Commander.

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

Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Попробовал и с правильным й - аналогично открывается.
Если в этот пост вы вставляли этот же символ что и в имени файла, который проверяли - то это не тот символ. Это чистый символ "И краткое".
https://www.upload.ee/files/13593510/__ ... _.rar.html

вот архив с таким файлом.
little-brother писал(а):Сделаю наверно переключение через всплывающие меню по клику на соотв. элементу в строке состояния.
Очень даже хорошее решение!
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

У меня на 7-ке открылось (и 32, и 64 версии). Надо проверить на 10-ке.
Изображение
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Надо проверить на 10-ке
Ну, у меня на 10ках! - т.е. на трех что под рукой - нет.

Добавлено спустя 4 минуты:
little-brother писал(а):Нечитаемый интерфейс - это косяк Win10. По этой причине на 7ке и сижу.
Воевать с мельницами и перерисовывать системные компоненты смысла не вижу.
кстати, а не надо ВСЁ прям перекрашивать. Просто покрасьте только ячейки, что содержат в себе заголовки в более серый тон. А то сейчас ну он совершенно сливается со всем белым, что рядом.
Изображение
Ну ужасно выглядит по сравнению с вашими цветами.

И да чтобы открыть этот файл я поменял букву "и краткое" на правильную.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Может быть дело в версии TC? Проверил на 10-ке - то ж открылось.

А не открывается - это плагин падает или Lister показывает содержимое файла просмотрщиком по умолчанию?

Заголовок покрасить не слишком сложно вроде, надо посмотреть как это делается и цвет подобрать.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Lister показывает содержимое файла просмотрщиком по умолчанию
именно.

Добавлено спустя 12 минут:
little-brother писал(а):Может быть дело в версии TC?
А это то как привязать? у меня последняя десятка. И сам ТС прекрасно работает с этим файлом. Другие схожие плагины так же прекрасно открывают этот файл. Т.е. тут очень точечная проблема в сабже...
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Кстати, а размер файла случайно не больше 10мб? По умолчанию файлы большего размера открываются именно в стандартном виде.
Увеличить размер файла можно в ini задав max-file-size.

Но если после переименования открывается, то надо все таки попробовать повторить ошибку (не очень понятно как отлаживать то, чего не видно).

Если обнаружится какой-нибудь файл, который вызывает падение плагина, то просьба его выслать, если будет возможность. Я попробовал удалять значения из колонок или добавить лишние, но плагин не падает :(
Возможно проблема, если используется UTF32?
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Кстати, а размер файла случайно не больше 10мб?
Речь идет о том файле, что вы скачали для тестов имени файла! Какой тут размер...
И кстати, если потенциально проблема открытия может быть связана с размером файла - то плагин при попытке открыть такой "неудобный" файл - должен выдавать хотя бы какое-то информационное окно на экран, если сам открыться не может таблично и показать всю инфу из файла. Ибо я не уверен, что буду помнить о таком ограничении как размер файла. А выставлять сразу лимит в 1 Гб думаю наверное слишком же? Или как?
little-brother писал(а):Но если после переименования открывается, то надо все таки попробовать повторить ошибку (не очень понятно как отлаживать то, чего не видно).
Именно, поменял неверную букву Й на верную и тут же всё открылось.
Отлаживать легко - просто пишите в лог действия внутри кода плагина. Начиная прямо с первого вызова главной функции плагина Тоталом. Тотал же передает имя файла для обработки. А вы уже и пытаетесь его открыть. Вот и надо всё логировать - как этот процесс происходит.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

А выставлять сразу лимит в 1 Гб думаю наверное слишком же? Или как?
Да думаю можно наверно и гиг, и два. Просто при просмотре огромных файлов плагин будет открывать их неспешно, в особенности по сравнению со штатным просмотрщиком, который читает только кусочек файла. Кроме того, поскольку весь файл грузится в память, а потом конвертируется в UTF16LE (это родная кодировка Windows), то для обработки потребуется х2-3раза оперативы (сейчас это вроде не проблема). Добавлю наверно опцию нулевой размер, чтобы плагин игнорировал проверку размера файла.
Отлаживать легко
У меня то проблема с именем не проявляется, все открывается и в Win7 и в Win10, а потому отладка ничего не даст :( Да и нечего там логировать - имя приходит в ANSI (TC использует устаревшую кодировку, т.к. это исторически так сложилось - он уже на Win95/98 работал, где UTF16 завезли не сразу), я его конверчу в UTF16LE и открываю файл.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):отладка ничего не даст Да и нечего там логировать - имя приходит в ANSI (TC использует устаревшую кодировку, т.к. это исторически так сложилось - он уже на Win95/98 работал, где UTF16 завезли не сразу), я его конверчу в UTF16LE и открываю файл
Это на МОЕЙ машине даст пользу - т.к. вы сможете прочитать МОЙ лог и сравнить со своим - где то же имя, но открывается, а на моей машине нет. Вот и найдете узкое место...
Вполне вероятно, что уже на моменте передачи имени действительно есть какое-то отличие. Или в процедуре конвертации вылетает какая-то ошибка и вуаля. Плаг не сработал....
Аватара пользователя
imig73
Сообщения: 285
Зарегистрирован: Вт июн 18, 2013 13:21
Откуда: г. Иркутск

Сообщение imig73 »

Destiny
Что за буква такая чудная или файл там, дайте поглядеть то. Вдруг и у меня не откроется.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Destiny, а можете посмотреть значения реестра?
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
ACP = 1251
1251 = c_1251.nls
1252 = c_1252.nls
Совпадает?

Версия для дебага - https://sgeproject.narod.ru/wlx/csvtab-wlx-test.zip
(выводится два всплывающих окна - первое в ANSI кодировке, второе - уже в UTF16).

imig73, viewtopic.php?p=134532#134532
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
ACP = 1251
1251 = c_1251.nls
1252 = c_1252.nls
Совпадает?
совпадает.
little-brother писал(а):(выводится два всплывающих окна - первое в ANSI кодировке, второе - уже в UTF16).
выводится только для 32 битного плагина. 64 бит. даже не вызывается???
Вы точно в само-пресамом начале первейшего вызова плагина из тотала вставили вывод этого диалога?
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Да, в самом начале и должно вывести два сообщения

Изображение

Заметил, что имя у Лайф с неправильным й получается странное
Изображение

Возможно это даже косяк TC. Хотя файл у меня открывается.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Да, в самом начале и должно вывести два сообщения
Ну тогда я ничего не понимаю. для 64битного плага этого окна нет. Т.е. Тотал сам не вызывает плагин? Но почему вызывает другой схожий плагин?
Может какая другая функция Тоталом для плагина вызывается, чтобы определить - может ли он обработать этот файл или нет. ДО ListLoad...

Кстати, а почему ListLoad, когда для юникодных систем должны быть вызов ListLoadW???
И руководство от Гислера говорит:

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

What's the easiest way to support Unicode in an existing plugin?
 
There are actually two ways, an "all in one" combined Unicode/ANSI plugin, and two separate plugins.
 
A. Combined Unicode/ANSI plugin
1. Get my sample plugin fsplugin (file system plugins section) even if you write a different type of plugin!
2. Add the files cunicode.h and cunicode.cpp to your project. They contain various functions to make Unicode support easier.
3. Convert your existing functions to Unicode and rename them to FunctionNameW. For all file functions like CreateFile, do not call their Unicode counterpart CreateFileW directly. Instead, call the functions from cunicode.cpp like CreateFileT. These functions automatically call the right Unicode or ANSI function, and even support file name lengths >259 characters!
4. For each converted function like FunctionNameW, recreate a function FunctionName which you call this way:
 
int __stdcall FunctionName(char* SomeString1,char* SomeString2)
{
    WCHAR SomeString1W[wdirtypemax],SomeString2W[wdirtypemax];
    return FunctionNameW(awfilenamecopy(SomeString1W,SomeString1),awfilenamecopy(SomeString2W,SomeString2));
}
 
The Macro awfilenamecopy will convert the ANSI string SomeString1 to Unicode and store it inSomeString1W. This variable must not be a pointer, because awfilenamecopy uses "countof" to get the target length.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Точно, походу в этом и есть ошибка!

В самом начале вызывается ListGetDetectString для определения подходящее ли расширение или нет

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

void __stdcall ListGetDetectString(char* DetectString, int maxlen) {
	snprintf(DetectString, maxlen, "MULTIMEDIA & ext=\"CSV\"");
}
Видимо у вас имя файла теряет конечный .CSV и в результате плагин не открывает. Чтобы убедиться в этом Можно прописать csvtab открывать файлы всех типов (насколько я знаю, строку обнаружения пользователь как то может для плагина задать самостоятельно) и проверить - откроет или нет.
а почему ListLoad, когда для юникодных систем должны быть вызов ListLoadW?
Потому что до туда я не дочитал :D
По идее разницы быть не должно, но похоже, что она имеется.

Просьба проверить Unicode-версию (сообщений выводиться не должно) - https://sgeproject.narod.ru/wlx/csvtab-wlx-test2.zip
Если были файлы, на которых плагин падал, то еще и проверить на них.
Ответить