Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
6-1171746923
alexm_hs
2007-02-18 00:15
2007.10.21
Идентификатор таблицы маршрутов в коммутаторе


15-1190563931
ProgRAMmer Dimonych
2007-09-23 20:12
2007.10.21
Поддскажите, плз, самое простое и быстрое решение...


15-1190197815
Sergey13
2007-09-19 14:30
2007.10.21
Сегодня самый известный сетевой символ — смайлик — отмечает юбиле


2-1190627331
АндрейК
2007-09-24 13:48
2007.10.21
множественный выбор в DBGrid


2-1190626331
fira
2007-09-24 13:32
2007.10.21
как создать собственную курсор в среде делфи.Например : принажат