OLE

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Сообщение STAKANOV » 11.02.2006 23:08:33

Код: Выделить всё
program speech;
uses
  windows,comobj,ActiveX;
var
  voice:OLEVariant;
begin
  CoInitialize(nil);
  voice:=CreateOLEObject('SAPI.SpVoice');
  voice.Speak('Hello',0);
end.


при компиляции выдает
speech.pas(9,8) Error: Illegal expression
speech.pas(9,8) Fatal: Syntax error, ";" expected but "identifier SPEAK" found


Наверно что-еще надо указать (-Mdelphi не помогает)
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV » 12.02.2006 02:23:31

Кажется это только в версии 2.2 будет работать :(
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Иван Шихалев » 13.02.2006 08:31:11

Кажется это только в версии 2.2 будет работать

Совершенно верно. По крайней мере — не раньше.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение STAKANOV » 13.02.2006 11:36:10

Но модули comobj,ActiveX приствуют ....
Есть где-нибудь инфа(с примерами) по работе с OLE на FreePascal ?
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Иван Шихалев » 13.02.2006 12:14:33

Должно работать через интерфейсы просто... Но ни диспинтерфейсов, ни автоматизации через варианты пока нетути.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Сообщение STAKANOV » 14.02.2006 11:35:51

Должно работать через интерфейсы просто... Но ни диспинтерфейсов, ни автоматизации через варианты пока нетути.

я вот об этом и подумал, но совершенно не могу найти ни документации ни примеров :(
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение IUnknown » 15.03.2006 11:54:35

В модуле ComObj,Ole2 вообще отсутствует реализация чего-либо. Я тут недавно исправил это упущение, но... оказалось действительно через варианты не хотит работать. Есть в таком случае 2 выхода
1. Работать непосредственно через VTBL и IUnknown. В этом случае программисту надо закладывать самому в свой модуль доступ к интерфейсам. Если интерфейсов сотни 2, то это конечно тяжко :) Зато этот способ самый быстрый в плане производительности и дает возможность компилятору контролировать большинство типов.
2. Работать c IDispatch. Достоинства - достаточно правльно реализовать метод Invoke чтобы получить взможность вызвать любой метод того же Word например. Этот способ реализован в Делфи и Бейсике. Недостаток - тормознутость, может возникнуть большое кол-во ошибок в рантайме, и еще можно ощутить всю радость работы с маловразумительными типами Com.

Вот теперь не знаю стоит ли браться за реализацию всего этого, а если да, то какой способ лучше. :unsure: Мож кто присоветует что-то...
IUnknown
новенький
 
Сообщения: 73
Зарегистрирован: 10.03.2006 14:25:02
Откуда: Донецк

Сообщение STAKANOV » 15.03.2006 20:41:27

1. Работать непосредственно через VTBL и IUnknown. В этом случае программисту надо закладывать самому в свой модуль доступ к интерфейсам. Если интерфейсов сотни 2, то это конечно тяжко  Зато этот способ самый быстрый в плане производительности и дает возможность компилятору контролировать большинство типов.


есть где пример или описание как это сделать?
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение IUnknown » 15.03.2006 21:03:23

Минимальный пример есть в МСДН, есть еще у меня самодельный модуль для работы с Word, могу поделиться, но не раньше понедельника (винчестер осыпался, так что может еще и по памяти придется восстанавливать)
IUnknown
новенький
 
Сообщения: 73
Зарегистрирован: 10.03.2006 14:25:02
Откуда: Донецк

Сообщение STAKANOV » 15.03.2006 22:11:20

Минимальный пример есть в МСДН, есть еще у меня самодельный модуль для работы с Word, могу поделиться, но не раньше понедельника (винчестер осыпался, так что может еще и по памяти придется восстанавливать)


В МСДН все на Си, если с обчнным АПИ это не важно, то здесь я не уверен. Хотя если я не прав, то мне просто надо взять книжку по OLE из соседней комнаты. :rolleyes:

А вот примерчик маленький на FreePascal было бы самое оно. :)

У меня тут был пример из Delphi для работы со SpeechAPI, точнее даже пример + модуль с уже определенными классами. Все даже собиралось без проблем. Только вот не работало. Оказалось в используемых для работы с OLE модулях fpc в реализации методов только генерация run-time error. Это заставило меня думать, что в fpc работа с OLE вообще не реализована, даже через IUnknown. :(

Вот модуль если кому интересно. Только он не работает. :(
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение IUnknown » 16.03.2006 12:31:24

Вот простейший примерчик на паскале сделал вчера. Собственно проигрывает звуковой файл через DirectShow. Разумеется пример рабочий и и работа только через интерфейсы. Только как его приаттачить на форум этот архивчик-то?
IUnknown
новенький
 
Сообщения: 73
Зарегистрирован: 10.03.2006 14:25:02
Откуда: Донецк

Сообщение GigoVich » 16.03.2006 13:04:34

IUnknown, спаситель мой... я тоже пример работы с интерфейсами искал. Дома талмуд валяется о 600 страницах, но руки до него никак не дотянутся. Плиз аттач пример, ну ил если не трудно будет слей мне на \[EMAIL=gigovich@yandex.ru\]ящик\[/EMAIL\]. На дельфях во всю IE юзаю, когда-то чисто на интерфейсах делал потом обленился и начал варианты юзать... окончательно всё забыл...
GigoVich
новенький
 
Сообщения: 99
Зарегистрирован: 07.11.2005 02:05:02
Откуда: г. Москва

Сообщение IUnknown » 16.03.2006 13:16:34

Блин, на форум аттачить не могу, гугловкий ящик ругается на вложение типа zip (illegal attachment) :blink:
IUnknown
новенький
 
Сообщения: 73
Зарегистрирован: 10.03.2006 14:25:02
Откуда: Донецк

Сообщение Janus » 16.03.2006 13:47:20

Кидай сюда: <a href='http://zero.kanet.ru/upload/index.php?page=/@FreePascal' target='_blank'>http://zero.kanet.ru/upload/index.php?page=/@FreePascal</a>
Janus
постоялец
 
Сообщения: 134
Зарегистрирован: 07.11.2005 17:06:49

Сообщение IUnknown » 16.03.2006 13:53:18

В вообще для создания документов офиса не обязательна возня с Automation.
Можно пойти на МСДН почитать схему по нужному продукту (это обычный xml) и вооружившись подходящим xml парсером можно создавать полноценные документы без наличия самого офиса, каких-то библиотек, запутанных COM-интерфейсов.
Например документы OpenOffice - как раз и есть по сути xml файлы упакованные каким-то алгоритмом (7zip их легко распакует).
IUnknown
новенький
 
Сообщения: 73
Зарегистрирован: 10.03.2006 14:25:02
Откуда: Донецк

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru