Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.16;
Скачать: CL | DM;

Вниз

Вызов OLE из DelphiXE   Найти похожие ветки 

 
И. Павел ©   (2011-06-22 16:55) [0]

Здравствуйте.
Перешел, наконец-то на Delphi XE.

Вызов:

   A := CreateOleObject("...");
   A.SomeMethod("login", "password");


Привеодит к ошибке, т.к. аргументы заданы некорректно. Но если написать:

   A := CreateOleObject("...");
   A.SomeMethod(String("login"), String("password"));


то все работает. Получается, что литералы в XE - 8-мибитные? Или я чего-то недопонимаю?


 
И. Павел ©   (2011-06-22 16:57) [1]

> т.к. аргументы заданы некорректно

Не совсем правильно выразился. Точнее: компилятор не ругается, но OLE-объект не устраивает содержимое аргументов.


 
tesseract ©   (2011-06-22 17:02) [2]


> но OLE-объект не устраивает содержимое аргументов


OLE PWideChar обычно хочет. Что в tlb у объекта ?


 
И. Павел ©   (2011-06-22 18:11) [3]


> tesseract ©   (22.06.11 17:02) [2]

Спасибо. COM объект на работе. завтра посмотрю. Но скорее всего там все вшито в dll.

Просто странно, что литерал и переменная типа String воспринялись по разному.


 
tesseract ©   (2011-06-23 12:43) [4]


> Просто странно, что литерал и переменная типа String воспринялись
> по разному.


Вообще-то String<>Pchar, а wideString<>PwideChar. Так же как LongBool<>Boolean.


 
И. Павел ©   (2011-06-23 13:24) [5]

tesseract ©
Спасибо. Похоже, компилятору нужно было действительно точнее сообщить - переменные каких типов нужно передавать в функцию.

Импортировал tlb-файл. В качестве всех параметров функции ожидается "const xxx WideString".

В Delphi7 литералы нормально приводились к WideString. А в XE, похоже, действительно аргументы как-то по другому преобразуются.
Подключил к проекту файл с информацией о типах. Теперь, видимо, перед тем, как вызвать метод, Delphi производит преобразования типов и вызов "A.SomeMethod("login", "password");" работает.


 
tesseract ©   (2011-06-23 15:55) [6]


> В Delphi7 литералы нормально приводились к WideString.


Не замечал подобного в случае русского языка. Точно помню, что WideString использовал в принудительном порядке.



Страницы: 1 вся ветка

Текущий архив: 2011.10.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
2-1308849951
Pcrepair
2011-06-23 21:25
2011.10.16
ИНДИ10, вопросы по синтаксису клиента


2-1308748384
Alex_C
2011-06-22 17:13
2011.10.16
Как форме перхватить нажание VK_LEFT?


3-1264534891
crank
2010-01-26 22:41
2011.10.16
Добавление данных и шифрование базы


15-1308062128
Мимо не прошел
2011-06-14 18:35
2011.10.16
Свое


15-1308836003
картман
2011-06-23 17:33
2011.10.16
как эта задачка решается Хорошо?