Главная страница
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.061 c
3-1078388326
Olegka
2004-03-04 11:18
2004.04.04
Calculated Fields


14-1078668053
Piter
2004-03-07 17:00
2004.04.04
А что случилось с ixbt.com?


1-1079354927
Mim
2004-03-15 15:48
2004.04.04
Не появляются полосы прокрутки клиентской облисти MDI form в CLX


3-1078929983
Nax
2004-03-10 17:46
2004.04.04
Преобразования типа TDateTime


1-1079674554
Nonamik
2004-03-19 08:35
2004.04.04
Динамический массив