Вверх ↑
Этот топик читают: Гость
Ответов: 3655
Рейтинг: 69
#31: 2009-02-02 17:20:27 ЛС | профиль | цитата
afandi писал(а):
Как это сделать можешь посмотреть в кодах компонентов для работы с
Вордом.[/i](набор моих компонентов)

Я про набор Components Word_3

карма: 0

0
Ответов: 542
Рейтинг: 12
#32: 2009-02-02 17:23:05 ЛС | профиль | цитата
nesco, извините пропустил строчку
code_11676.txt
Ошибка происходит на строке s:= ReadString(_data,ID,');
т.е. когда пытаюсь прочитат ранее конвертированный r:= VarToStr(Ole1C);

карма: 0

0
файлы: 1code_11676.txt [355B] [188]
Разработчик
Ответов: 25681
Рейтинг: 2087
#33: 2009-02-02 17:45:22 ЛС | профиль | цитата
Да ну, муть какя-то. Перкрасно все работает

Вот тестовый пример


Add(MainForm,2953706,140,105)
{
link(onCreate,11548153:doProcess,[])
}
Add(InlineCode,11548153,217,119)
{
WorkPoints=#9:doProcess|
EventPoints=#6:Result|
DataPoints=#2:ID|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|23: Ole1C : OleVariant;|28: OleFizLica : OleVariant;|18: ID :THI_Event;|21: Result:THI_Event;|53: procedure doProcess(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|0:|32:procedure THiAsmClass.doProcess;|4:Var |14: s : string;|5:begin|29: s:= ReadString(_data,ID,');|12: Ole1C := s;|39: _hi_OnEvent(Result, VarToStr(Ole1C)); |4:end;|0:|4:end.|
link(ID,11708657:Value,[])
link(Result,4855798:doText,[])
}
Add(Memory,11708657,217,63)
{
Default=String(123421431)
}
Add(Edit,4855798,287,119)
{
Left=25
Top=10
Width=160
Text=""
}

карма: 20

1
Голосовали:afandi
Ответов: 542
Рейтинг: 12
#34: 2009-02-02 20:08:31 ЛС | профиль | цитата
nesco писал(а):
Да ну, муть какя-то. Перкрасно все работает

И у меня прекрасно работает пока я не подам на вход реально сконвертированное значение OleVariant.
Когда OleVariant содержить значение после инициализации 1C OLE server преобразование типов VarToStr(OleVariant ) проходит нормально а вот обратно уже не получается, ошибка Runtime
карма: 0

0
Разработчик
Ответов: 25681
Рейтинг: 2087
#35: 2009-02-02 21:27:27 ЛС | профиль | цитата
afandi писал(а):
а вот обратно уже не получается, ошибка Runtime

Ты чего, пытаешься передать его в схему в таком виде, как Variant, так это не получится
карма: 20

0
Ответов: 542
Рейтинг: 12
#36: 2009-02-02 22:32:04 ЛС | профиль | цитата
nesco писал(а):
пытаешься передать его в схему в таком виде, как Variant

Нет нет нет
code_11677.txt
карма: 0

0
файлы: 1code_11677.txt [212B] [179]
Разработчик
Ответов: 25681
Рейтинг: 2087
#37: 2009-02-02 22:39:24 ЛС | профиль | цитата
У тебя в схеме плавает тип string, а чем были эти данные до преобразования (ведь не обязательно они были строковыми), вот в те их и надо потом вернуть.
карма: 20

0
Ответов: 542
Рейтинг: 12
#38: 2009-02-02 22:50:14 ЛС | профиль | цитата

type
THIRun_1C_OLE = class(TDebug)
private
Ole1C : OleVariant;
r:string;

Ole1C := CreateOleObject(s);
ResOpen:=Ole1C.Initialize(Ole1C.RMTrade,s1+m+s2+s3,'NO_SPLASH_SHOW');

Да нет просто предложеннай тобой схема передачи OleVAriant в другой компонент через String не работает,
потому что операция



r:= VarToStr(Ole1C);
Ole1C := r;
в данном случае просто не работает выходит сообщение RunTime Error

карма: 0

0
Ответов: 3514
Рейтинг: 184
#39: 2009-02-02 23:00:20 ЛС | профиль | цитата
тег code используйте пожалуйста
карма: 0
0
Разработчик
Ответов: 25681
Рейтинг: 2087
#40: 2009-02-02 23:15:34 ЛС | профиль | цитата
afandi, используй для передачи в схеме переменных типа Variant указатель на эти переменные
Вот так это можно, попробуй разобраться



Add(MainForm,2953706,56,105)
{
link(onCreate,12525052:doEvent1,[])
}
Add(InlineCode,12869620,196,119)
{
WorkPoints=#4:Init|
VarPoints=#6:Result|
DataPoints=#4:Data|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|23: VarID: OLEVariant;|9: public|20: Data:THI_Event;|49: procedure Init(var _Data:TData; Index:word);|56: procedure Result(var _Data:TData; Index:word); |5: end;|0:|14:implementation|0:|27:procedure THiAsmClass.Init;|5:begin|37: VarID := ReadInteger(_Data, Data);|4:end;|0:|34:procedure THiAsmClass.Result; |5:begin|36: dtInteger(_Data, integer(@VarID));|4:end;|0:|0:|4:end.|
link(Data,10654259:Value,[])
}
Add(InlineCode,4049513,196,182)
{
WorkPoints=#4:Init|
EventPoints=#6:Result|10:ResultType|
DataPoints=#4:Data|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|23: VarID: OLEVariant;|9: public|21: Data: THI_Event;|23: Result: THI_Event;|37: ResultType: THI_Event; |49: procedure Init(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|27:procedure THiAsmClass.Init;|3:var|19: PointID: Pointer;|5:begin|59: VarID := OLEVariant(Pointer(ReadInteger(_Data, Data))^);|62: _hi_onEvent(Result, VarToStr(VarID)); // чисто для проверки|89: _hi_onEvent(ResultType, VarType(VarID)); // Должно на выходе быть varInteger = $0003;|4:end;|0:|4:end.|
link(Result,2987836:doEvent,[])
link(Data,12869620:Result,[])
link(ResultType,4277039:doEvent,[(247,195)(247,223)])
}
Add(Memory,10654259,196,63)
{
Default=Integer(45)
}
Add(Hub,12525052,126,119)
{
link(onEvent1,12869620:Init,[])
link(onEvent2,4049513:Init,[(168,132)(168,188)])
}
Add(Debug,2987836,266,182)
{
WEName="Result"
VDName=""
}
Add(Debug,4277039,266,217)
{
WEName="ResultType"
VDName=""
}

------------ Дoбавленo:

afandi, что я тебе писал в прошлый раз, ты не понял, а уже взялся за такие вещи, как переменные типа Variant, ну не делают так. Торопимся, но спешка нужна... Ну ты сам знаешь где.

nesco писал(а):
Планово изучи синтаксис Delphi, изучи явные отличия программирования под управлением KOL, а не VCL, изучи основы построения компонентов HiAsma и -- дерзай


Ключевое слово здесь -- Планово
карма: 20

1
Голосовали:afandi
Ответов: 542
Рейтинг: 12
#41: 2009-02-02 23:54:36 ЛС | профиль | цитата
Ну наконец то все получилось. СПАСИБО!. Так хочется заглавнимы писать боюсь забанят.
Завтра пойду пополнять свой webmony переведу в счет сайта HiAsm 1 килорубль, как и обещал ранее.
------------ Дoбавленo:
nesco писал(а):
изучи синтаксис Delphi
C Delphi работал много лет, но далее процедурного программирования не углублялся.

карма: 0

0
Разработчик
Ответов: 25681
Рейтинг: 2087
#42: 2009-02-02 23:58:29 ЛС | профиль | цитата
afandi писал(а):
C Delphi работал много лет, но далее процедурного программирования не углублялся

Ну -- это уже что-то. Значит, тебе будет легче
карма: 20

0
Ответов: 542
Рейтинг: 12
#43: 2009-02-03 00:35:38 ЛС | профиль | цитата
Позвольте спросить. Почему компонент хранящийся в отдельной папке, а подключил я ее путем перенеса на рабочую область ini файла, после редактирования компонента исходники сохраняются в стандартыне папки Code,Conf а не в ту папку откуда была сделана инсталяция компонента.
карма: 0

0
Разработчик
Ответов: 25681
Рейтинг: 2087
#44: 2009-02-03 01:17:24 ЛС | профиль | цитата
afandi, так и должно быть. HiAsm переносит все файлы в свои рабочие папки и записывает информацию в свою базу. И доступ по Ctr_F осуществляется к файлам рабочей папки пакета
карма: 20

1
Голосовали:afandi
Ответов: 542
Рейтинг: 12
#45: 2009-02-05 20:57:52 ЛС | профиль | цитата
Компонент соединения 1С получился и работает нормально (спасибо советчикам), сейчась собираю компонент который будет предоставлять по запросу список метаданных базы 1С.
Может те кто знаком с 1С присоединятся ко мне ну хотя бы в качестве тестеров. У админов тоже прошу совета, как научится сделать компонент который предоставлял бы доступ к своим данным как к массиву?
что бы через компоненты ArrayEnum, ArrayRW, MatrixRW можно было обращатся к массиву метаданных которые будут выгружатся из базы данных 1С.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)