Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Вниз

Проблемы при работе с интерфейсами   Найти похожие ветки 

 
shc   (2004-09-03 15:09) [0]

Здравствуйте мастера. Подскажите, пожалуйста, почему не работает пример кода
(по идее должен добовлятся элемент в список, но это не происходит)

Пример кода:

 IInterfaceList = interface
 ...
   function Add(const Item: IInterface): Integer;
 ...
 end;

 IXMLAttributeDefList = interface(IInterfaceList)
 ...
   property AttributeDefs[const Index: Integer]: IXMLAttributeDef read GetAttributeDef; default;
 ...
 end;

IXMLElementDef = interface(IXMLTypedSchemaItem)
 ...
   property AttributeDefs: IXMLAttributeDefList read GetAttributeDefList;
 ...
end;
..................

procedure ttt;
var Rr:   IXMLElementDef;
   item: IXMLAttributeDef;
begin
 rr.AttributeDefs.Add(item); <-- ничего не происходит
end;


 
Суслик ©   (2004-09-03 15:17) [1]

может ты ничего не реалзиовал в add?


 
Суслик ©   (2004-09-03 15:18) [2]

кто будет реализовавывать указанные интерфейсы?
сами по себе они работать не будут - это интерфейсы.

нужно писать классы, которые будут что-то делать

если такие классы у тебя описаны, то покажи их


 
MBo ©   (2004-09-03 15:21) [3]

где реализация интерфейсов???
где создание объекта????


 
shc   (2004-09-03 15:32) [4]

Классы и интерфейсы из стандартной библиотеки Делфи.
Реально,  Rr:IXMLElementDef я получаю с помощю функции (значит он создан), и получаю нормально (пробывал выводить его другие свойства).
А вот item действительно не создаю.

Я так понял, предлагается сначала выполнить
 item:=(TXXXClass.create as IXMLAttributeDef);
а уже потом
 rr.AttributeDefs.Add(item);  ???


 
Суслик ©   (2004-09-03 17:53) [5]


>  item:=(TXXXClass.create as IXMLAttributeDef);
> а уже потом
>  rr.AttributeDefs.Add(item);  ???

да.

можно без as, т.е. просто

item := tsomeclass.create

если:
1) tsomeclass реализовывает инерфейс item
2) если не ошибаюсь в этом случае у интерфейса должен стоять guid (типа такого).


 
Суслик ©   (2004-09-03 18:00) [6]

вообще обычно пишут так (пишу тут, т.е. могут быть синтаксические ошибки)

type
  ISomeInterface = interface
     ["{5A7C1DD1-1D30-4DCE-ACC4-8553BF1FCFE8}"]
     // guid создается ctrl+shift+g. Всегда создавай новый!!!
     procedure DoSomething;
  end;

  TSomeObject = class(TInterfacedObject, ISomeInterface)
     protected procedure DoSomething;
  end;
implementation

procedure TSomeObject.DoSomething;
begin
  ShowMessage("hi");
end;

Где-то еще

var
  i: ISomeInterface;
begin
  i := TSomeObject.Create();
  i.Add();
end;


 
shc   (2004-09-07 15:59) [7]

Спасибо за ответы. Нашел другой путь, хоть и коряватый (похоже метод Адд не реализовывался для даного типа, хотя присутствует в интерфейсе)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.048 c
14-1093923774
тихий вовочка
2004-08-31 07:42
2004.09.19
нужен взгляд со стороны


14-1094037529
БЖ
2004-09-01 15:18
2004.09.19
Не зря все-таки говорят: семь раз отмерь и т.д.


1-1094281938
Андрей.Н
2004-09-04 11:12
2004.09.19
Ошибка при загрузке файлов проекта D6.


1-1094045974
Wolfram
2004-09-01 17:39
2004.09.19
Все еще про ttime


6-1089375941
ilop
2004-07-09 16:25
2004.09.19
Как узнать имена всех компов в сети.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский