Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Некорректная передача строкового параметра при работе с Excel [Delphi, Windows]


BiN ©   (2006-01-31 17:34:00) 

При выполнении следующего кода

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-го сервера.
Просьба натолкнуть на путь истинный.

С уважением,


BiN   (2006-02-01 11:32:00) [1]

Если кому интересно,  вызов MultiByteToWideChar с заданием кодовой страницы 1251 и флагом MB_PRECOMPOSED решил проблему.

Всем еще раз спасибо.


Набережных С.   (2006-02-01 08:40:00) [2]


> BiN ©   (31.01.06 21:29) [3]


> Пока что обхожу проблему, используя для ввода входного параметра
> метод ExcelApplication.GetOpenFilename вместо TOpenDialog-
> а. Вроде работает.

Работает - не трогай!
:)))


BiN   (2006-01-31 21:29:00) [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-01-31 21:04:00) [4]


> BiN ©   (31.01.06 17:34)

Попробуй MultiByteToWideChar с явным заданием кодовой страницы.


umbra   (2006-01-31 19:24:00) [5]

2 BiN ©   (31.01.06 17:34)

первое, что приходит вголову - у этого конкретного клиента нет доступа к конкретному файлу-шаблону. Но, судя по


> Происходит это, только когда в имени открываемого файла
> присутствуют символы национальной раскладки


дело не в этом.


> приложение запускается в терминальной сессии 2003-го сервера

значит ли это, что у всех пользователей одинаковый оффис и они этот оффис пользуют на одной и той же ОС?


Наверх

Титульная страница Поиск, карта сайта Написать письмо