Текущий архив: 2007.10.21;
Скачать: CL | DM;
Вниз
Некорректная передача строкового параметра при работе с Excel Найти похожие ветки
← →
BiN © (2006-01-31 17:34) [0]При выполнении следующего кода
procedure OpenFile(const FileName: String);
var
ExcelApp: Variant;
WorkBook: Variant;
Temp: Variant;
begin
try
ExcelApp := CreateOleObject("Excel.Application");
Temp:=FileName;
CurrentBook:=ExcelApp.Workbooks.Add(Temp); //exception
......
end;
выпадает ошибка о ненайденном файле. Происходит это, только когда в имени открываемого файла присутствуют символы национальной раскладки (например "D:\ИмяФайла.xls").
Тем не менее, при передаче в качестве параметра константы вида
CurrentBook:=ExcelApp.Workbooks.Add("D:\ИмяФайла.exe");
ошибка не возникает.
Использование StringToOleStr не помогло.
Причем, в сообщении excel-я имя файла представлено верно, без замены русских букв на "????".
Проблема усугубляется еще тем, что ошибка возникает только на одной машине, у других пльзователей (их более чем 100) - всё в порядке.
Еще один немаловажный момент: приложение запускается в терминальной сессии 2003-го сервера.
Просьба натолкнуть на путь истинный.
С уважением,
← →
umbra © (2006-01-31 19:24) [1]2 BiN © (31.01.06 17:34)
первое, что приходит вголову - у этого конкретного клиента нет доступа к конкретному файлу-шаблону. Но, судя по
> Происходит это, только когда в имени открываемого файла
> присутствуют символы национальной раскладки
дело не в этом.
> приложение запускается в терминальной сессии 2003-го сервера
значит ли это, что у всех пользователей одинаковый оффис и они этот оффис пользуют на одной и той же ОС?
← →
Набережных С. © (2006-01-31 21:04) [2]
> BiN © (31.01.06 17:34)
Попробуй MultiByteToWideChar с явным заданием кодовой страницы.
← →
BiN © (2006-01-31 21:29) [3]
> umbra © (31.01.06 19:24) [1]
>
> значит ли это, что у всех пользователей одинаковый оффис
> и они этот оффис пользуют на одной и той же ОС?
>
Да, Office у них одной версии (2002) и сервис-паки, кстати, тоже. Другое дело, что могли съехать региональные настройки, но, при осмотре паталогий не обнаружено.
> Набережных С. © (31.01.06 21:04) [2]
>
>
> > BiN © (31.01.06 17:34)
>
> Попробуй MultiByteToWideChar с явным заданием кодовой страницы.
>
Спасибо, попробую.
Пока что обхожу проблему, используя для ввода входного параметра метод ExcelApplication.GetOpenFilename вместо TOpenDialog-а. Вроде работает.
← →
Набережных С. © (2006-02-01 08:40) [4]
> BiN © (31.01.06 21:29) [3]
> Пока что обхожу проблему, используя для ввода входного параметра
> метод ExcelApplication.GetOpenFilename вместо TOpenDialog-
> а. Вроде работает.
Работает - не трогай!
:)))
← →
BiN © (2006-02-01 11:32) [5]Если кому интересно, вызов MultiByteToWideChar с заданием кодовой страницы 1251 и флагом MB_PRECOMPOSED решил проблему.
Всем еще раз спасибо.
Страницы: 1 вся ветка
Текущий архив: 2007.10.21;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.027 c