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

Вниз

COM   Найти похожие ветки 

 
Marina_Sm   (2004-11-08 12:01) [0]

Почему при вызове COM-объекта, созданного в Delphi:
tab = new ActiveXObject("FirstCom.Number");   //visial Basic
Com создается и тут же разрушается (выводится сообщение в методе destroy), хотя когда его вызываю через приложение delphi все функционирует нормально. Помогите, пожалуйста.


 
digger ©   (2004-11-08 12:41) [1]

В Delphi есть такая функция CoInitialize, которую нужно запускать перед созданием COM объекта. Может быть в VB есть?


 
VMcL ©   (2004-11-08 14:04) [2]

>>Marina_Sm  (08.11.04 12:01)

Как объявлена переменная tab? Где она еще используется?


 
Marina_Sm   (2004-11-08 14:25) [3]

tab = new ActiveXObject("Comics.BGSocket");      
tab.SetValue(2);
У меня на первой строке пишет что объект создался, тут же уничтожается, и при второй строке уже пишется что tab = nil и им пользоваться нельзя (или что-то вроде этого на английском)/ хотя если word вызывать, то все проходит нормально.
Может где нибудь есть толковый пример создания COM - объекта на Delphi? Честно говоря, я уже измучалась с этим Com"ом :_-(


 
Marina_Sm   (2004-11-08 14:35) [4]

Если честно, мне когда этот пример давали, сказали, что visial basic. Но мне кажется , что это Java Script (расширение js). Хотя не знаю :) А текст для вызова Word такой:
tab = new ActiveXObject("Word.Application");       //ActiveX
tab.visible = true;

function initIO() {
Shell = WScript.CreateObject("Wscript.Shell")
fso = new ActiveXObject("Scripting.FileSystemObject");
ForReading = 1, ForWriting = 2; ForAppending = 3;
}
function echo(txt) {
WScript.Echo(txt);
}


 
VMcL ©   (2004-11-08 15:56) [5]

>>Marina_Sm  (08.11.04 14:25) [3]

Код COM-объекта есть?


 
Marina_Sm   (2004-11-09 00:22) [6]

unit NumServ;

interface

uses
 Windows, ActiveX, ComObj, NumIntf;

type
 TNumber = class(TComObject, INumber)
 private
   fValue: Integer;
 public
   function GetValue: Integer; virtual; stdcall;
   procedure SetValue (New: Integer); virtual; stdcall;
   procedure Increase; virtual; stdcall;
   procedure Initialize; override;
   destructor Destroy; override;
 end;

const
 Class_Number: TGUID = "{5B2EF181-3AAE-11D3-B9F1-00000100A27B}";

implementation

uses ComServ;

{ TNumber }

destructor TNumber.Destroy;
begin
 inherited;
 MessageBox (0, "Object Destroyed",
   "TDLLNumber", mb_OK); // API call
end;

function TNumber.GetValue: Integer;
begin
 Result := fValue;
end;

procedure TNumber.Increase;
begin
 Inc (fValue);
end;

procedure TNumber.Initialize;
begin
 inherited;
 fValue := 10;
 MessageBox (0, "Создан!!!",
   "TDLLNumber", mb_OK); // API call
end;

procedure TNumber.SetValue(New: Integer);
begin
 fValue := New;
end;

initialization
 TComObjectFactory.Create(ComServer, TNumber, Class_Number,
   "Number", "Number Server", ciMultiInstance, tmApartment);
end.


 
VMcL ©   (2004-11-09 07:24) [7]

>>Marina_Sm  (09.11.04 00:22) [6]

А INumber?


 
Marina_Sm   (2004-11-09 20:50) [8]

unit NumIntf;

interface

type
 INumber = interface
   ["{B4131140-7C2F-11D0-98D0-444553540000}"]
   function GetValue: Integer; stdcall;
   procedure SetValue (New: Integer); stdcall;
   procedure Increase; stdcall;
 end;

implementation

end.

Может где-нибудь есть пример? :( А то совсем этот Com замучил


 
Vitalik ©   (2004-11-10 11:15) [9]

Предположу, что нужно создавать не COM Object, а Automation Object. Тогда ваш класс, реализующий интерфейс будет наследником не TComObject a TAutoObject. А этот класс (TAutoObject) реализует интерфейс IDispatch, необходимый для вызова методов COM объектов из скриптовых языков. Собственно, на сколько мне известно, объекты автоматизации (Aoutomation Object) для того и нужны, чтобы их можно было использовать в скриптовых языках.


 
Vitalik ©   (2004-11-10 11:25) [10]

На http://www.interface.ru в "поиск по сайту" введите DELPHI и COM.
Вот в 5й части про это и написано.


 
FastByte   (2004-11-16 07:48) [11]

Вот кусок моего кода, который работает
1. ===== Интерфейс и сразу GUID Com класса: =======

unit uPluginInterfaceRS;
 interface
 const
  Class_EconomCalcRollingSources: TGUID =
                   "{77689308-ACF5-40AA-94EB-64F505DFB7A7}";
type
  IEconomCalcRS = interface
  ["{4C304431-FC32-48CC-B1A3-2E58F51866E3}"]
    function Exec:String;
  end;
implementation
end.

2. ====== Реализация =======

unit uComObject;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
 Windows, ActiveX, Classes, ComObj,uPluginInterfaceRS;

type
 TEconomCalcRollingSources = class(TComObject,IEconomCalcRS)
 protected
   function Exec:String;
 end;

implementation

uses ComServ,uFormEconomCalc;

{ TEconomCalcRollingSources }

function TEconomCalcRollingSources.Exec: String;
var
 pForm:TFormMain;
begin
 pForm:=TFormMain.Create(nil);
 pForm.ShowModal;
 pForm.Free;
end;

initialization
 TComObjectFactory.Create(ComServer, TEconomCalcRollingSources,
 Class_EconomCalcRollingSources,
   "EconomCalcRollingSources", "", ciMultiInstance,tmApartment);
end.


 
Marina_Sm   (2004-11-17 10:54) [12]

Так из Java Script тоже не работает :( Может я конечно что-то не так набила... Если не сложно пришлите, пожалуйста, исходник на почту marsv2004@mail.ru



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

Форум: "Corba";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
14-1122457669
Layner
2005-07-27 13:47
2005.08.21
База по автомобилям


1-1122640151
mazepa
2005-07-29 16:29
2005.08.21
io error 53


14-1122629003
MaksimkaP
2005-07-29 13:23
2005.08.21
Доступ в локальную сеть с двух машин


14-1122196456
romychk
2005-07-24 13:14
2005.08.21
сеть не работает надежно


14-1122366787
Жук
2005-07-26 12:33
2005.08.21
На сколько полезен секс по утрам?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский