Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизКак определить масив констант? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.029 c