www.boolean.name

www.boolean.name (http://forum.boolean.name/index.php)
-   FAQ и уроки (http://forum.boolean.name/forumdisplay.php?f=110)
-   -   [Вопрос] Лист с элементами различных типов (http://forum.boolean.name/showthread.php?t=14790)

Greymem 26.05.2011 11:41

[Вопрос] Лист с элементами различных типов
 
Здравствуйте.
У меня проблема. Допустим есть три Типа

Код:

Type_container
      Field content:TList=New TList;
Type_in
      Field Name:String;
      Field X:Int;
Type_inTwo
      Field Name:String;
      Field Y:float;

Global container:Type_container=New Type_container


Так вот переменные типов Type_in и Type_inTwo (скажем 5 переменных одного типа и 5 переменных другого типа) я хочу записать в переменную container
Допустим я их записал с помощью функции
container.content.AddLast();

Они там себе спокойно живут, по мере добавления длина списка увеличивается, а как их оттуда прочитать?
Find и обращение по индексу не помогают, т.е. находишь и обращаешься а вот к полям переменных типов Type_in и Type_inTwo уже не можешь обратиться.

Создавать по листу на каждый тип тоже не очень рационально, так как у каждого типа, который я хочу запихнуть в лист, есть методы с одинаковым названием но разными алгоритмами. И я хотел бы эти методы запускать прогуливаясь только по одному листу.

Спасибо за внимание.
И заранее спасибо за ответы.

Venom2 26.05.2011 12:29

Ответ: [Вопрос] Лист с элементами различных типов
 
Цитата:

Сообщение от Greymem (Сообщение 189509)
так как у каждого типа, который я хочу запихнуть в лист, есть методы с одинаковым названием но разными алгоритмами. И я хотел бы эти методы запускать прогуливаясь только по одному листу.

Сделай базовый тип с абстрактными методами и наследуй от него оба других, ну и проходи по списку базовым типом:

Код:

Type BaseType

        Method MyMethod() Abstract

End Type

Type MyType1 Extends BaseType
       
        Method MyMethod()
        End Method
       
End Type

Type MyType2 Extends BaseType
       
        Method MyMethod()
        End Method
       
End Type

For Local Item:BaseType = EachIn Content
        Item.MyMethod()
Next


Greymem 26.05.2011 13:02

Ответ: [Вопрос] Лист с элементами различных типов
 
Venom2
ООООО, большое спасибо. Сейчас попробую.

Greymem 26.05.2011 13:25

Ответ: [Вопрос] Лист с элементами различных типов
 
Ух тыж! Заработало.
Venom2, спасибо большое за помощь


Часовой пояс GMT +4, время: 15:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод: zCarot