OleksiyPenkov / MyHomeLib

MyHomeLib – комп'ютерна програма для керування домашньою бібліотекою електронних книг. MyHomeLib може використовуватися не тільки для каталогізації колекції файлів з електронними книгами, але і як клієнт для роботи з бібліотекою Лібрусек та іншими бібліотеками на движку Лібрусек (Флібуста та іншими подібними).
MIT License
149 stars 41 forks source link

unit_ExportToDeviceThread.pas TODO -oNickR -cUsability : предусмотреть возможность сказать "да для всех" #51

Open ZVanoZ opened 3 weeks ago

ZVanoZ commented 3 weeks ago

В файле "unit_ExportToDeviceThread.pas" висит TODO с ревизии Oleksiy Penkov 11.03.2019, 06:50

Этот повторяющийся диалог изматывает при выгрузке больших объемов книг из вкладки "Группы". Выгружаю 40000 книг вторые сутки. Приходится наблюдать за прогрессом и нажимать "ОК" при появлении диалога.

Я не знаю точно в чем причина. Подозреваю что книга находится одновременно в нескольких жанрах и при копировании жанров в одну группу получается, что книга копируется несколько раз. При первой попытке все ОК. При последующих попытках выдается диалог.

Варианты исправления.

  1. Если после первого диалога пользователь выбрал "Продолжить", то выводить еще один диалог "Запомнить выбор и не спрашивать больше?" "Да"|"Нет". Если пользователь выбрал "Да", то сохранять флаг в локальной переменной потока и в следующий раз проверять. Это самый простой способ.
  2. Добавить опцию в настройки приложения и пробрасывать ее через параметры в TExportToDeviceThread. Чуть сложнее. Не так удобно для пользователей, как 1й вариант. Большинство пользователей не поймет, что нужно выставить опцию.
  3. Добавить в диалоговое окно чекбокс "Запомнить выбор". Это самый сложный способ т.к. вероятно потребуется пилить нестандартное диалоговое окно на Win-API. Зато этот вариант наиболее удобен для пользователя.

[2024-11-13] Наконец то поймал ошибку. Она возникает, когда программе не удается создать файл. В моем случае это длинное название файла для файловой системы Ext4. Максимально допустимое имя 134 символа кирилицы (Ext4 допускает до 255 байт на имя файла, но тут играет роль кодировка символов. В UTF8 от 1 до 4х байт).

First chance exception at $7745D902. Exception class EFCreateError with message 'Cannot create file "Z:\tmp\sveta-all\Абдусаламова Зулейха Магомедовна\Опыт решения педагогической проблемы в рамках одного из направлений профессиональной деятельности классного руководителя  «Патриотическое воспитание».fb2". Параметр задан неверно'. Process MyHomeLib.exe (5212)

Вероятно, тот же результат будет в случаях: