Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];

Вниз

Почему в Delphi работает а в C++ нет ?   Найти похожие ветки 

 
User0   (2002-10-15 15:42) [0]

Прочитал следующее:

Variant WORD=CreateOleObject("Word.Document.10");
Word.Application .....

Но компилер пишет 4то у Variant нет метода Application и прочее... Почему ?


 
PVOzerski   (2002-10-15 16:07) [1]

Может, потому, что в C++ WORD и Word - разные имена?


 
User0   (2002-10-15 16:13) [2]

Да не ты понял... :) У любой переменной типа Variant нет свойства Application и прочих... Почему ? Может я 4то-то не подгрузил ?


 
Best Before 2024   (2002-10-15 16:18) [3]

в С++ так писать нельзя. Надо или подключать TLB, либо использовать OlepropertyGet/OlepropertySet/OleProcedure/OleFunction


 
PVOzerski   (2002-10-15 16:29) [4]

Честно говоря, я почти не работал с OLE automation, наверное, поэтому странному синтаксису, который здесь проявляет Delphi, удивляюсь. Суть странности этого синтаксиса состоит в том, что после присвоения variant"у результата функции CreateOleObject последний начинает вести себя как класс с методами, имена которых, во-первых, выясняются только at Run-time, но при этом пишутся в тексте программы именно как имена методов, а не как строковые переменные, да еще к тому же могут содержать в себе символы, которые Паскалю в страшном сне не снились... К сожалению, могу посоветовать только посмотреть примеры работы с OLE automation, наверняка имеющиеся в Builder"е.


 
Romkin   (2002-10-15 16:32) [5]

Зачем мудрить?
var V: variant;

V := CreateOleObject("Word.Application");
V.FileOpen(...


 
Best Before 2024   (2002-10-15 16:35) [6]

2 PVOzerski © (15.10.02 16:29)
Delphi,видимо, "интерпретирует" эти строки, т.е. работает с ними в run-time с поздним связыванием, но зато позволяет их писать "по-человечески", как VB


 
Dr_Mike   (2002-10-15 16:41) [7]

А какая разница ? Писать с кавычками или без, в тексте или при присваивании ? - компилятор то все равно это сам делает, так что так проще и, по-моему, удобнее..


 
Dimka Maslov   (2002-10-15 16:44) [8]

После такого присвоения Delphi рассматиривает вариантную переменную как указатель на интерфейс IDispatch, а вызовы "методов" этого "объекта" в конечном итоге преобразуются в вызовы методов интерфейса, служащих для вызова реальных методов объекта. При этом ошибки в написании таких имён методов обнаруживаются только в время исполнения, компилятор их пропускает.
Стандарт языка С++ такого не позволяет, поэтому там возможен только импорт библиотеки типов с созданием заголовочных файлов, содержащих классы для обращения к объекту автоматизации.


 
saxon   (2002-10-15 16:55) [9]

2 Dimka Maslov
> Стандарт языка С++ такого не позволяет, поэтому там возможен
Так что в С++ нельзя сделать позднее связывание или я не свсем все понял?

2 User0
А почему
Word.Application а не
Word->Application???? разве не -Word- указатель ?


 
Dimka Maslov   (2002-10-15 17:00) [10]

>saxon
Теоретически на C++ можно сделать и позднее связывания, но его надо делать вручную.


 
User0   (2002-10-15 17:30) [11]

To saxon:

Word.Application - так типа компиляторски правильно, потому как если бы он был типа _Document или Word_2k::WordDocument (все равно) то тогда бы было Word->Application

Ок... я кажется понял... Спасибо.


 
User0   (2002-10-15 17:39) [12]

А сто пудов :)))

Best Before 2024 - ти мля ШАМАН :)))))) АА Заработало !!!



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

Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
3-78288
AngelForever
2002-10-02 17:36
2002.10.24
Помогите разобраться с компонентой StringGrid


3-78286
Bishop
2002-10-02 19:09
2002.10.24
EventAlerter


7-78696
cdaDmitriy
2002-08-15 15:12
2002.10.24
TRAY


3-78284
User0
2002-10-01 14:26
2002.10.24
Почему Event-ы не ловятся ?


1-78416
cosinus
2002-10-15 16:37
2002.10.24
Как избавиться от системного beep?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский