Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1078569331
Piter
2004-03-06 13:35
2004.04.04
Хостинг


1-1079602519
Kupnu4
2004-03-18 12:35
2004.04.04
Ошибка при загрузке


3-1078402608
Duncann
2004-03-04 15:16
2004.04.04
Про ODBC


7-1076403470
Димос
2004-02-10 11:57
2004.04.04
Очистка корзины


1-1079345970
viksoft
2004-03-15 13:19
2004.04.04
сохранить параметры в ехе файле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский