Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ZVanoZ opened this issue Nov 3, 2024 · 0 comments

Comments

@ZVanoZ
Copy link

ZVanoZ commented Nov 3, 2024

В файле "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)

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

  • ограничение в правах на файловую систему для пользователя, от которого запущена программа
  • нехватка свободного места на диске
  • некорректные символы в названии файла для типа файловой системы
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant