Главная страница
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.04 c
14-1078905227
SPeller
2004-03-10 10:53
2004.04.04
Теперь и я...


14-1078559394
IIStan
2004-03-06 10:49
2004.04.04
Кому-нибудь в Питере нужны 3 билета на Колбасный Цех 4???


7-1074074797
Serg_g
2004-01-14 13:06
2004.04.04
Функция SetNetScheduleAccountInformation


1-1079524553
Comp
2004-03-17 14:55
2004.04.04
TStringGrid и DrawFocusRect


14-1078658912
Undert
2004-03-07 14:28
2004.04.04
Flash