Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 36
1

TObjectList и работа с классами

26.02.2015, 15:59. Показов 3337. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят, подскажите плиз, немного не догоняю принцип работы с классами.

Создаю класс
Код
TCashList = class
    Column1: String;
    Column2: String;
end;
И пихаю его в TListObject
Код
   CL := TCashList.Create;
   OL := TObjectList.Create;

   CL.Column1 := '111';
   OL.Add(CL);
И чтобы получить содержимое использую
Код
str := TCashList(OL[0]).Column1;
А как сделать собственный класс, чтобы получить вот такой результат?
Код
str := CL.Items[0].Column1;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2015, 15:59
Ответы с готовыми решениями:

Можно ли в TObjectList добавлять TObjectList-ы?
Подскажите в TObjectList можно добовлть TObjectList-ы

Работа с классами
Проверьте пожалуйста правильность кода, там наверное много ошибок, но сама не могу исправить... ...

Работа с классами
Добрый день! Ищу Delphi-программиста для решения следующей задачи. Описать объектный тип...

Работа с классами
Всем привет, вообщем проблема такая, нужно сделать проверку прямоугольный треугольник или нет(это...

10
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
26.02.2015, 16:31 2
да как обычно :
- объявляешь свой класс,
- его приватным членом делаешь тот самый ObjectList,
- в cвоем классе объявляешь св-во Items, в геттере котрого получаешь из ObjectList нужный объект, приводишь его к нужному типу и возвращаешь результатом
1
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 36
26.02.2015, 16:36  [ТС] 3
Спасибо за ответ, а можно попросить примерчиком небольшим это сделать?
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
26.02.2015, 16:54 4
Если у тебя XE и выше, то и делать то ничего не надо - достаточно воспользоваться встроенным механизмом дженериков:

Delphi
1
2
3
4
5
6
var
 OL: TObjectList<TCashList>;
..
OL := TObjectList<TCashList>.Create;
 
str := OL[0].Column1;
0
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 36
26.02.2015, 17:11  [ТС] 5
Не получается( У меня XE7.

Если так:
Код
OL: TObjectList<TCashList>;
то выдает ошибку:
Код
[dcc32 Error] mainfile.pas(109): E2003 Undeclared identifier: 'TObjectList<>'
Если использовать круглые скобки, то пишет, что ожидается ";" а он видит "("
0
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
26.02.2015, 17:24 6
Добавь
Delphi
1
uses Generics.Collections;
Объявляем список
Delphi
1
var OL: TObjectList<TCashList>;
Создаем список:
Delphi
1
OL := TObjectList<TCashList>.Create;
Добавляем в список:
Delphi
1
OL.Add(TChashList.Create('1','2');
Обращаемся к элементу:
Delphi
1
OL[Index].Column1;
1
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 36
26.02.2015, 17:38  [ТС] 7
Цитата Сообщение от nestquik2 Посмотреть сообщение
uses Generics.Collections;
Вот он где секрет был)) Спасибо всем, все заработало))

Добавлено через 10 минут
Ребята, подскажите еще одну вещь плиз
Delphi
1
2
3
4
5
6
    CL := TCashList.Create;
    CL.Column1 := '111';
    OL.Add(CL);
    CL.Column1 := '222';
    OL.Add(CL);
    ShowMessage (OL[0].Column1+' - '+OL[1].Column1);
И в итоге у меня выводится
[DELHI]
222-222
[/DELHI]
Получается, что мне придется перед каждой забивкой создавать новый компонент
[DELHI]
CL := TCashList.Create;
CL.Column1 := '111';
OL.Add(CL);
CL := TCashList.Create;
CL.Column1 := '222';
OL.Add(CL);
[/DELHI]
Или есть какой-либо другой способ?
0
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
26.02.2015, 18:05 8
Я же показал:
Цитата Сообщение от nestquik2 Посмотреть сообщение
OL.Add(TChashList.Create('1','2');
0
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 36
26.02.2015, 18:13  [ТС] 9
Проглядел эту строчку. При компиляции выдает ошибку, что слишком много параметров и ссылается на содержимое скобок
0
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
26.02.2015, 18:20 10
Слишком много параметров похоже потому, что у тебя не прописан конструктор для класса TChashList.
Замени:
Delphi
1
2
3
4
TCashList = class
    Column1: String;
    Column2: String;
end;
на (писал от руки, могут быть не большие ошибки)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
TCashList = class
private
    Column1: String;
    Column2: String;
public
    constructor Create(s1,s2: string);
end;
 
{...}
constructor TCashList.Create(s1,s2: string);
begin
  Column1:=s1;
  Column2:=s2;
end;
1
0 / 0 / 1
Регистрация: 24.10.2013
Сообщений: 36
26.02.2015, 18:23  [ТС] 11
Блиин, понял, все получилось, спасибо за помощь и терпение.
0
26.02.2015, 18:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.02.2015, 18:23
Помогаю со студенческими работами здесь

Работа с классами
Собственно говоря, как вызвать определённый метод для всех объектов класса?

Работа с классами-раздел private
Здравствуйте,прошу вашей помощи, у меня проге есть класс, в нем set метод в разделе private а в...

String Grid и работа с классами
помогите кто сможет!! 1. Составить программу, которая организует ввод матрицы размерностью 5х5 ...

TObjectList
у меня есть список TDocumentList (хранит не объекты а &quot;указатель на него&quot; ) как мне удалить 4...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru