Как Присоединять Файлы С Русскими Именами?

Тема в разделе "Lotus - Программирование", создана пользователем Olex, 3 июн 2013.

  1. Olex

    Olex Member

    Регистрация:
    3 июн 2013
    Сообщения:
    11
    Симпатии:
    0
    Поможите, люди добрые. Сам я программист начинающий и все такое.
    Нужно присоединять в поле RTF файл. Набросал код - все работает, но только до тех пор, пока имена файлов английские.
    Открывается текстовый файл со списком файлов, которые должны быть сохранены в документы:
    Line Input #fileNum%, FileForSave
    If FileForSave<>"" Then
    Set doc = New NotesDocument( db )
    Set rtitem = New NotesRichTextItem (doc, "IncomingFile")
    Set obj = rtitem.EmbedObject (EMBED_ATTACHMENT, "", PathFromRead &"\" & FileForSave) - тут возникает ошибка
    doc.Form = "Mail"
    Call doc.Save (True,False)
    Как только попадается русское имя файла - вместо реального имени файла в FileForSave получается абракадабра, ну и, естесственно, потом файл никуда не вставляется.
    Нашел на IBM вопрос с той же ошибкой:
    http://www-10.lotus.com/ldd/nd85forum.nsf/...enDocument#main
    И похожее:
    http://www-01.ibm.com/support/docview.wss?uid=swg21284370
    Но ответов нет.
    Можно что-нибудь сделать?
    Пока приходит в голову только архивировать файл в англ. имя rar'ом перед тем как приаттачивать в поле, но это как то громоздко, хотелось бы обойтись средствами Лотуса.
    Неужели Лотус не всемогущ?
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    В Preference клиента что стоит?
     

    Вложения:

    • preference.png
      preference.png
      Размер файла:
      78,3 КБ
      Просмотров:
      134
  3. Мыш

    Мыш Lotus team
    Lotus team

    Регистрация:
    12 фев 2008
    Сообщения:
    1.020
    Симпатии:
    8
    И какая кодировка используется в текстовом файле? Мож, он в UTF-8?
    ЗЫ. А в дебаггере строку нормально показывает?
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    кодировка в файле отличается от платформенной
    скорее-всего - в префайх, кот. указал savl стоит что-то из европейского (судя по кракрзябрам), а в файле - вин1251
    Мыш юникод далбы вопросики
     
  5. Olex

    Olex Member

    Регистрация:
    3 июн 2013
    Сообщения:
    11
    Симпатии:
    0
    Всем спасибо.
    Нашел уже причину, да, список текстовых файлов создается командой dir, поэтому он в cp866.
    Исправил вставкой команды перед созданием спиcка файлов chcp 1251 - все заработало.

    Не понял (интересно было бы узнать на всякий случай) как в Лотус засасывать файлы в cp866. Пробовал ставить при открытии файла "Charset = ASCII" - не помогло.

    Обнаружил ошибку в хелпе Домино 8.5.1 в разделе "MIME Charset Names" - всюду "Cryllic languages". Загадочные индусы.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    использовать NotesStream, с указанием кодировки (Open)
     
  7. Olex

    Olex Member

    Регистрация:
    3 июн 2013
    Сообщения:
    11
    Симпатии:
    0
    Помогите, пожалуйста, еще по одной ошибке.

    Когда имена файлов стали длинными - перестал работать EmbedObject
    Set obj = rtitem.EmbedObject (EMBED_ATTACHMENT, "", FileForSave)
    возникает ошибка 4225 File <имя файла> not found.
    Экспериментальным путем установил, что если имя файла содержит русские буквы, и длина общего пути до 174 символов - работает, а вот если 175 - уже не работает.
    Это из-за двухбайтовой кодировки русских букв?
    Очень криво, т.к. пользователи выкладывают файлы в папки, и ОС это позволяет. Откуда им знать, что Лотус берет только 174 символа? Или я что то не так делаю? Может как-нибудь, кроме как орг. мерами обходится?
    Насчет 174 символов - поторопился. Иногда и меньше не схватывает (видимо, в зависимости от к-ва русских букв).
    Поставил ограничение на 128 символов пока.
    А официально сколько?
     
  8. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    на винде официально полный путь 256 символов.
    http://www-01.ibm.com/support/docview.wss?uid=swg21085908
    WinApi до сих пор дает ограничение полного пути 260 символов, если пути в Unicode - ограничение в 32Кб буфера.

    Добавлено:
    Если в начало пути поставить \\?\, то путь будет в Unicode и будет ограничен 32Кб (про 32767 символов ошибка.)
     
  9. Olex

    Olex Member

    Регистрация:
    3 июн 2013
    Сообщения:
    11
    Симпатии:
    0
    savl
    Спасибо табе, белая шамана!
    Пойду пробовать.
    У меня, правда, не save, а наоборот attach к документу, но может и тут сработает.
    Не, c аттачем такое не сработало, увы.
     
  10. Olex

    Olex Member

    Регистрация:
    3 июн 2013
    Сообщения:
    11
    Симпатии:
    0
    Точно помню, что где то читал, но никак не найду где? То что Лотус скрипт может обрабатывать файлы с русскими именами не в 256 символов как винда, а чуть ли не 80?
    Кто помнит, есть ли такое ограничение?
     
  11. Olex

    Olex Member

    Регистрация:
    3 июн 2013
    Сообщения:
    11
    Симпатии:
    0
    О, нашел вот тут:
    http://codeby.net/forum/threads/33710.html?hl=длинные+пути
    Черт, похоже единственное пока решение - создавать bat-ник, который будет копировать файл в папку с более коротким именем и из нее уже аттачить.
    Ну изврат же ...?
     
  12. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Olex
    Решайте уровнем регламента. Дайте распоряжение крепить файлы с диска C или D из спецпапки.
    Не усложняйте и не решайте то, что не требует технического решения.
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    дебилизмы видовс + индусы ИБМ - это уже изврат, а хранение файлов в сложных путях и русскими именами - это изврат в N степени
    сталкиваюсь с этим ежедневно - на файлопомойке в 10-ок теров хранится куча г-на, кот. теперь не в силах понять и вспомнить к-л, поиск невозможен (вследствии неумения юзверей давать метатеги)
     
  14. Мыш

    Мыш Lotus team
    Lotus team

    Регистрация:
    12 фев 2008
    Сообщения:
    1.020
    Симпатии:
    8
    Либо через Win API - CopyFile...
     
  15. Olex

    Olex Member

    Регистрация:
    3 июн 2013
    Сообщения:
    11
    Симпатии:
    0
    Не уверен, что не требует.
    С точки зрения людей... понять то можно.
    Если пользователь может средствами ОС создать файл и положить его на диск именно используя общий путь до 256 символов, то логично ждать, что и другими программами (в том числе Лотусом) это будет нормально обрабатываться.
    Ведь никакого предупреждения пользователю проводник об ошибке не сообщает.
    Вставил батник, все обошел.
     
  16. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Проводник и не сообщит, а тот же файл диалог на Java или в другой проге еще как ругнется.
    Ожидать можно чего угодно, но есть "технические ограничения".
    Этот батник будет работать до первого неWin пользователя.
    Не забывайте про запрещенные символы в именах файлов, их тоже надо будет корректировать.
     
  17. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Кстати, прекрасно работает:
    Код (LotusScript):
    {\\?\} & files(0)
    Attach без проблем.
    Если в пути к файлу нет пробелов, с пробелами не пашет.
     
Загрузка...

Поделиться этой страницей