Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 417
от 02.12.2003, 19:10

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 1287
Отправлено ответов: 2841
Активность: 220.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Gibbel
Статус: Профессиональный
Общий рейтинг: 106.37
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
chebv
Статус: Доверительный
Общий рейтинг: 116.14
[Подробней >>]
Avl2k
Статус: Профессиональный
Общий рейтинг: 124.79
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.09
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1275. Здравствуйте уважаемые эксперты! Для работы с серверами COM требуются вариантные типы, а у меня не п... (ответов: 3)
Вопрос № 1278. Доброе время суток в продолжении вопроса 1271(в приложении) > Отвечает Avl2k > #import "C:Progr... (ответов: 1)
Вопрос № 1279. Здравствуйте уважаемые эксперты! Как узнать адрес функций?... (ответов: 3)

Вопросов: 3, ответов: 7


 Вопрос № 1275

Здравствуйте уважаемые эксперты!
Для работы с серверами COM требуются вариантные типы, а у меня не получаются преобразования в VARIANT ни одного встроенного типа (LPCTSTR, BSTR, и т.д.). На код вроде (VARIANT)тип или VARIANT(тип) VC7.1 ругается о невозможности приведения... Как это правильно сделать, или где можно что-то ещё почитать по этой теме (по-русски)?
Заранее благодарен, Nic



Вопрос отправлен: 28.11.2003, 20:33
Отправитель: Nic

[Следующий вопрос >>] [Список вопросов]

Отвечает Gibbel

Доброе время суток, Nic!
VARIANT - это структура, содержащая в себе поле типа данных и сами данные. Работаем с ним примерно так:
VARIANT VariantVariable;
V_VT(&VariantVariable) = VT_I4;
V_I4(&VariantVariable) = 1000;

Подробнее читай в MSDN.


Ответ отправлен: 29.11.2003, 19:18
Отправитель: Gibbel


Отвечает chebv

Здравствуйте, Nic!
http://www.rsdn.ru/article/com/varsafearr.xml


Ответ отправлен: 01.12.2003, 08:44
Отправитель: chebv


Отвечает Avl2k

Здравствуйте, Nic!
VARIANT - это просто WinAPI-структура, поэтому преобразования и не получаются. Если Вы используете VC++, то лучше пользоваться C++-обертками _variant_t, _bstr_t и др. (лежат в comdef.h).
Пример:
_variant_t v1 = "tttt";
_variant_t v2 = true;
VARIANT v = v1;
С уважением, Avl2k.

Ответ отправлен: 01.12.2003, 14:11
Отправитель: Avl2k


 Вопрос № 1278

Доброе время суток
в продолжении вопроса 1271(в приложении)
> Отвечает Avl2k
> #import "C:Program FilesMicrosoft OfficeOfficeMSO9.DLL"
> #import "C:Program FilesCommon FilesMicrosoft SharedVBAVBA6VBE6EXT.OLB"
> #import "C:Program FilesMicrosoft OfficeOfficeExcel9.olb" rename("DialogBox", "_DialogBox") rename("RGB", "_RGB")
а если у меня нет таких файлов(windows и office XP)? что подключать по такой конфигурации ?


Приложение:


Вопрос отправлен: 29.11.2003, 10:41
Отправитель: vova

[Следующий вопрос >>] [Список вопросов]

Отвечает Avl2k

Доброе время суток, vova!
Надо найти библиотеку типов Excel (если установлен Excel, то обычно лежит в Program Files\Microsoft Office\Office и называется Excel<цифра>.olb, где <цифра> - номер версии). Можно также посмотреть Ole/COM Object Viewer (входит в поставку VS) куда указывает Microsoft Excel <цифра> Object Library (искать в ветке Type Libraries по алфавиту).
После того, как нашли библиотеку типов, включите ее с помощью #import в файл и запустите компиляцию. При компиляции файла будет сгенерирован .tlh файл. В самом его начале будут закомментированы директивы включения необходимых зависимых библиотек.
С уважением, Avl2k.

Ответ отправлен: 01.12.2003, 13:24
Отправитель: Avl2k


 Вопрос № 1279

Здравствуйте уважаемые эксперты!
Как узнать адрес функций?



Вопрос отправлен: 29.11.2003, 16:27
Отправитель: xxx

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Здравствуйте, xxx!
если имя функции f, тогда ее адрес &f...

Ответ отправлен: 29.11.2003, 17:50
Отправитель: vitya


Отвечает Avl2k

Здравствуйте, xxx!
Примерно так:
struct X
{
void f() {}
};
void f()
{}
void ttt()
{
void (X::*p1)() = X::f;
void (X::*p2)() = &X::f; // p2 == p1
void (*p3)() = f;
void (*p4)() = &f; // p4 == p3
// вызов
X x1;
(x1.*p1)();
(*p3)();
p4();
}
С уважением, Avl2k.

Ответ отправлен: 01.12.2003, 11:43
Отправитель: Avl2k


Отвечает chebv

Здравствуйте, xxx!
Если я не ошибаюсь, имя функции - это как раз и есть ее адрес.
int aaa()
{
...
}
...
long a;
a = (long)aaa;
printf("%x %x",aaa,a);
...

Ответ отправлен: 01.12.2003, 14:34
Отправитель: chebv



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (26)
C / C++ (22)
Perl (3)
Builder / Delphi (16)
Pascal (18)
Basic / VBA (4)
Java / JavaScript (10)
PHP (14)
Криптография (5)
WinAPI (9)
Пользователю
Windows 95/98/Me (43)
Windows NT/2000/XP (55)
"Железо" (32)
Поиск информации (18)
Администратору
Windows NT/2000/XP (32)
Linux / Unix (13)
Юристу
Гражданское право (11)
Семейное право (8)
Трудовое право (9)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное