Главная страница
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.47 MB
Время: 0.033 c
11-1059554398
Aser2k
2003-07-30 12:39
2004.04.04
Не могу установить KOL


9-1064520950
Sacred
2003-09-26 00:15
2004.04.04
Camera в GlScene и ее проекции....


9-1064046147
PigMey
2003-09-20 12:22
2004.04.04
DelphiX


4-1075220914
BSG
2004-01-27 19:28
2004.04.04
ListView в чужой программе.


8-1068202473
Maxon
2003-11-07 13:54
2004.04.04
Windows Media Player