Главная страница
    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.952 c
3-1093146870
Flagman
2004-08-22 07:54
2004.09.19
Процедура не отрабатывает :(


4-1091891488
Seldon
2004-08-07 19:11
2004.09.19
Как определить какой шрифт...


14-1094114473
maksim
2004-09-02 12:41
2004.09.19
удаление символов строки при нажатии кнопки


14-1093611245
vkraw
2004-08-27 16:54
2004.09.19
помогите! plz-plz-plz-plz!!! Halcyon


4-1091127630
ychenick
2004-07-29 23:00
2004.09.19
Перепрошивка EEPROM





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