Форум: "Основная";
Текущий архив: 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.007 c