Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.30;
Скачать: CL | DM;

Вниз

Проблема с получением параметров метода из 1C   Найти похожие ветки 

 
JustI   (2008-10-20 13:58) [0]

Есть OLE сервер. В библиотеке типов для интерфейса объявлен один метод procedure Msg(S: OleVariant; I: OleVariant);

Вот код модуля реализующего интерфейс


unit Unit1;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
 ComObj, ActiveX, Project1_TLB, StdVcl, Dialogs;

type
 TTest = class(TAutoObject, ITest)
 protected
   procedure Msg(S: OleVariant; out Result: Integer); safecall;
 end;

implementation

uses ComServ, unit2;

procedure TTest.Msg(S: OleVariant; out Result: Integer);
begin
 ShowMessageFmt("%s", [S]);
 Result := 666;
 form2.Name := "zzzzz4343";
 ShowMessage(form2.Name); //**************
end;

initialization
 TAutoObjectFactory.Create(ComServer, TTest, Class_Test,
   ciMultiInstance, tmApartment);
end.



Вопрос в следующем: почему при вызове из 1С метода Msg значение form2.Name оказывается равным "Form2" а не "zzzzz4343", и еще не возвращается значение out-переменной Result.


 
clickmaker ©   (2008-10-20 14:04) [1]

> не возвращается значение out-переменной Result

Result - зарезервированное слово для возвращаемого функцией значения.
Обзови по другому. AResult, н-р

и что такое вообще form2? где и когда она создается?


 
Сергей М. ©   (2008-10-20 14:10) [2]

TTest = class(TAutoObject, ITest)
 protected
   function Msg(S: OleVariant): Integer; safecall;
 end;


 
JustI   (2008-10-20 14:13) [3]

форма создается здесь же. Переопределяю метод Initialize.

procedure TTest.Initialize;
begin
 inherited;
 form2 := Tform2.Create(nil);
end;


 
JustI   (2008-10-20 14:24) [4]


> function Msg(S: OleVariant): Integer; safecall;


В этом случае 1С выдает ошибку плохая коллекция


 
Сергей М. ©   (2008-10-20 14:26) [5]

покажи код 1С-вызова ..


 
JustI   (2008-10-20 14:35) [6]

Вот код

Процедура Get()

Перем Рез;

   Компонент = СоздатьОбъект("Project1.Test");
                         
   Рез = Компонент.Msg("zzz");

   Сообщить(Рез);

КонецПроцедуры


 
Сергей М. ©   (2008-10-20 14:49) [7]

Покажи текст тестового проекта целиком, включая текст Project1_tlb.pas


 
JustI   (2008-10-20 14:55) [8]

Спасибо Сергей М.. Все разобрался, как обычно сам накосячил. С возвратом значений теперь все ясно.



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

Текущий архив: 2008.11.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
3-1210764969
VlGrig
2008-05-14 15:36
2008.11.30
Конфликт ADO и BDE ???


2-1224225379
Darvin
2008-10-17 10:36
2008.11.30
TThread + OnException


2-1224677195
Серж
2008-10-22 16:06
2008.11.30
Составление сервисом запроса.


3-1210662299
Beer_Hunter
2008-05-13 11:04
2008.11.30
Теоретический вопрос


2-1224529956
cruiser
2008-10-20 23:12
2008.11.30
String и повторяющиеся элементы