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

Вниз

Как определить масив констант?   Найти похожие ветки 

 
Erik ©   (2004-03-18 17:34) [0]

Есть такой тип:
TParseNode = procedure(aNode: IXmlNode; pDev: PointDev) of object;
RNameToAdr = record
  Name: String;
  Adr: TParseNode;
end;
Надо:
Const
Code: Array[0..4] of RNameToAdr = (("result",NodeResult), (), (),());
NodeResult - это моя процедура. Я знаю, что написать так прямо нельзя. Но может есть чтото похожее, у кого какие врианты?


 
Тимохов ©   (2004-03-18 17:40) [1]

type
tc1 = class
procedure a;
procedure b;
end;

r = record name: string; p: pointer end;
const
ar: array [0..1] of r = ((name:"a";p:@tc1.a), (name:"b";p:@tc1.b));

procedure tc1.a;
begin
end;

procedure tc1.b;
begin
end;

а потом через tmethod вызывать


 
Erik ©   (2004-03-19 16:23) [2]

Чегото у меня несработало, давно я TMethod неиспользовал. Сделал так
TParseResult(TMethod(XMLParse[i]).Code)(aNode, pDev);
говорит: [Error] uBuildXML.pas(230): Invalid typecast
Описание:
 TParseResult = procedure(aNode: IXmlNode; pDev: PointDev) of object;

 RNodeToAdr = record
  _Name: String;
   _Adr: Pointer; //TParseResult;
..................
 TBuildXML = class
 private
   fDoc: IXmlDocument;
   function PrepareNode(aNode: IXmlNode): Boolean;
   procedure NodeResult(aNode: IXmlNode; pDev: PointDev);

..................
const
 XMLParse: Array[0..1] of RNodeToAdr = (
  (_Name:"result";_Adr:@TBuildXML.NodeResult), ());
Может это из за секции private?


 
Erik ©   (2004-03-19 16:24) [3]

Чегото у меня несработало, давно я TMethod неиспользовал. Сделал так
TParseResult(TMethod(XMLParse[i]).Code)(aNode, pDev);
говорит: [Error] uBuildXML.pas(230): Invalid typecast
Описание:
 TParseResult = procedure(aNode: IXmlNode; pDev: PointDev) of object;

 RNodeToAdr = record
  _Name: String;
   _Adr: Pointer; //TParseResult;
..................
 TBuildXML = class
 private
   fDoc: IXmlDocument;
   function PrepareNode(aNode: IXmlNode): Boolean;
   procedure NodeResult(aNode: IXmlNode; pDev: PointDev);

..................
const
 XMLParse: Array[0..1] of RNodeToAdr = (
  (_Name:"result";_Adr:@TBuildXML.NodeResult), ());
Может это из за секции private?


 
Тимохов ©   (2004-03-19 16:32) [4]

var
m: TParseResult;
begin
TMethod(m).date := tbuildxml.create();
TMethod(m).code := XMLParse[i]).Code;
m(aNode, pDev);
end;

или data code наоборот - не помню - сам разберетесь.
точно то, что один из вар-тов правильный.


 
Erik ©   (2004-03-19 16:38) [5]

Вобщето я уже так и сделал.
    Method.Code := XMLParse[i]._Adr;
     Method.Data := Self;
    TParseResult(Method)(aNode, pDev);



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
3-1078405432
Lelik
2004-03-04 16:03
2004.04.04
ODAC


1-1079689062
bjohny
2004-03-19 12:37
2004.04.04
Компилятор


14-1078856818
Undert
2004-03-09 21:26
2004.04.04
Может кто на пальцах объяснит механизм действия


1-1079610622
for___
2004-03-18 14:50
2004.04.04
Как в Treeview узнать...


7-1075032357
Freaky
2004-01-25 15:05
2004.04.04
Синхронизирование времени