Главная страница
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.029 c
15-1190275092
Layner
2007-09-20 11:58
2007.10.21
Сколько Vista проработает без активации?


15-1190354682
vajo
2007-09-21 10:04
2007.10.21
Vista & XP


1-1186384261
ancot
2007-08-06 11:11
2007.10.21
Быстрый импорт из Excel


2-1190906832
hinst
2007-09-27 19:27
2007.10.21
Прямоугольник текста


10-1138264598
sam98
2006-01-26 11:36
2007.10.21
OPC клиент (передача серверу нескольких значений переменных)