Summary: | Не открывается html файл из обработки 1С 7.7 | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Денис Баранов <baraka> |
Component: | Интеграция в хост-систему | Assignee: | Илья Шпигорь <shpigor> |
Status: | CLOSED FIXED | QA Contact: | Marat Sharipov <regan> |
Severity: | minor | ||
Priority: | P3 | CC: | lav, petrovas |
Version: | 1.0.12 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | 13494 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 5395 | ||
Attachments: |
Дамп ошибки, возникающий при открытии файла.
Новая версия обработки |
Description
Денис Баранов
2010-03-29 19:00:18 MSD
Насколько понял для открытия html используется xdg-open из пакета xdg-utils. 1с7 передает в качестве аргумента xdg-open'у какой-то мусор (args - вывод из /usr/bin/xdg-open): $ww 1cv7s.exe args: 䌢尺整瑳睜栮浴≬ⰬㄭⰬⰬ /usr/bin/xdg-open: line 377: htmlview: команда не найдена winefile передает корректный путь до файла и все открывается: $ww winefile args: /net/wine/bottles/1c77/.wine-1c77-base/dosdevices/c:/test/w.html /usr/bin/xdg-open: line 377: htmlview: команда не найдена (In reply to comment #1) > Насколько понял для открытия html > используется xdg-open из пакета xdg-utils. > > 1с7 передает в качестве аргумента xdg-open'у > какой-то мусор (args - вывод из /usr/bin/xdg-open): > > $ww 1cv7s.exe > args: 䌢尺整瑳睜栮浴≬ⰬㄭⰬⰬ > /usr/bin/xdg-open: line 377: htmlview: команда не найдена > > winefile передает корректный путь до файла и > все открывается: > > $ww winefile > args: /net/wine/bottles/1c77/.wine-1c77-base/dosdevices/c:/test/w.html > /usr/bin/xdg-open: line 377: htmlview: команда не найдена > У маня открывается через gvfs-open (т.к. использую в качестве рабочего стола GNOME), но по сути передаются теже кракозябры. Для открытия url вызывается: C:\windows\system32\winebrowser.exe -nohome Сам url передается ему через DDE (Dynamic Data Exchange). Сейчас winebrowser считывает только юникодные строки из DDE. Насколько понимаю проблема в том, что 1с7 передает ASCII кодировку. (In reply to comment #3) > Для открытия url вызывается: > > C:\windows\system32\winebrowser.exe -nohome > > Сам url передается ему через DDE (Dynamic Data Exchange). > Сейчас winebrowser считывает только юникодные > строки из DDE. > > Насколько понимаю проблема в том, что 1с7 > передает ASCII кодировку. > да, 1с7 работает только в кодировке 1251, другие не понимает. Выложил патч. Решение заключается в том, чтобы проверять строку полученную через DDE с помощью IsTextUnicode. Если проверка не проходит - конвертировать ее в unicode. (In reply to comment #5) > Выложил патч. > > Решение заключается в том, чтобы проверять > строку полученную через DDE с помощью > IsTextUnicode. Если проверка не проходит - > конвертировать ее в unicode. > а где можно получить патч? Для меня это критично. > а где можно получить патч? Для меня это
> критично.
Патч войдет в следующую сборку WINE@Etersoft, которая будет доступна для скачивания на странице продукта нашего сайта.
Сборка будет завтра (09.04.10) к ночи доступна для скачивания по заказу сборки testing. Принято. WINE@Etersoft 1.0.12 eter5/eter4 (In reply to comment #6) > а где можно получить патч? Для меня это > критично. > Вы можете заказать сборку testing на странице продукта (In reply to comment #5) > Выложил патч. > > Решение заключается в том, чтобы проверять > строку полученную через DDE с помощью > IsTextUnicode. Если проверка не проходит - > конвертировать ее в unicode. > Проблема всё равно осталась, если в пути к файлу присутствует кириллица. Вывод консоли: err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7bc45584 wine: Unhandled page fault on read access to 0x00000030 at address 0x60353e60 (thread 0014), starting debugger... Unhandled exception: page fault on read access to 0x00000030 in 32-bit code (0x60353e60). Register dump: CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b EIP:60353e60 ESP:0033fb60 EBP:0033fb98 EFLAGS:00210202( - 00 - -RI1) EAX:001221b8 EBX:60410550 ECX:00122980 EDX:0000002c ESI:0000c003 EDI:00000000 Stack dump: 0x0033fb60: 00000001 000701ca 00000000 00000000 0x0033fb70: 603527f0 00000000 00122d70 000801c8 0x0033fb80: 603e0940 00000601 603c6afb 60410550 0x0033fb90: 00122548 00000000 0033fbd8 6035604a 0x0033fba0: 001221b8 0000c003 000701ca 00000000 0x0033fbb0: 000b00ae 000701ca 00122548 00000000 Backtrace: =>0 0x60353e60 in user32 (+0x33e60) (0x0033fb98) 1 0x6035604a in user32 (+0x3604a) (0x0033fbd8) 2 0x603576a8 DdeNameService+0x2c8() in user32 (0x0033fc68) 3 0x639a3a00 wmain+0x700() in winebrowser (0x0033fec8) 4 0x639a3ee6 in winebrowser (+0x3ee6) (0x0033fef8) 5 0x7b876e2f in kernel32 (+0x56e2f) (0x0033ffe8) 0x60353e60: cmpl %esi,0x4(%edx) Modules: Module Address Debug info Name (56 modules) ELF 101000- 106000 Deferred libxfixes.so.3 Created attachment 1644 [details]
Дамп ошибки, возникающий при открытии файла.
Переоткрываю багу. Проблема с кириллицей. Created attachment 1645 [details]
Новая версия обработки
В моем случае значение переменное НИмяФайла:
НИмяФайла = "U:\1C\БД Апрель\test.html"
Исключить кириллицу не возможно, т.к. связано с большими трудностями. (хотя может тут пробел дело портит?)
Если исключить пробелы (создал базу с путем H:\База), то возникает такая ошибка: err:heap:HEAP_ValidateInUseArena Heap 0x110000: prev arena 0x122948 invalid for in-use 0x122978 gvfs-open: h:///%5C%D0%91%D0%B0%D0%B7%D0%B0%5Ctest.html%E5%89%86%E4%95%85x%11%E2%B5%A8%12EL32.dll: ошибка открытия адреса: Указанный адрес не поддерживается Выложил еще один патч. Проблема в том, что из ddeString делаем unicode строку, но память под него выделена как для ASCII строки, т.е. в буфер ложим больше чем его размер. Поэтому память портилась (т.к. heap используется в других местах программы) и ссылка получалась битая. Решение - при преобразовании ddeString в unicode - заново выделять под него память. Проверял с кириллицей и пробелами в путях - должно работать. wine 7.42/15 Бутылка 1c77/1c77-base Обработка в C:\test\test.ert html открывается Принята |