Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.03.2012, 19:39
Пионер Пионер вне форума
Прохожий
 
Регистрация: 16.02.2012
Адрес: Оренбург
Сообщения: 40
Версия Delphi: 7
Репутация: 10
По умолчанию Записи...

У меня есть несколько типов записей, можно ли их записать в какой-нибудь тип данных, чтобы потом можно было обратиться к ним по индексу?
Ответить с цитированием
  #2  
Старый 23.03.2012, 19:40
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

массив, не? Имеется ввиду массив какого-нибудь базового типа

Последний раз редактировалось ChinYan, 23.03.2012 в 19:46.
Ответить с цитированием
  #3  
Старый 23.03.2012, 19:50
Пионер Пионер вне форума
Прохожий
 
Регистрация: 16.02.2012
Адрес: Оренбург
Сообщения: 40
Версия Delphi: 7
Репутация: 10
По умолчанию

нужен такой массив, чтобы в него разные записи можно было вносить!

Последний раз редактировалось Пионер, 23.03.2012 в 19:52.
Ответить с цитированием
  #4  
Старый 23.03.2012, 19:54
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Как тебе и сказали:
Цитата:
массив какого-нибудь базового типа
Создаешь базовый тип, на его основании - дочерние, и их все в массив...
Ответить с цитированием
  #5  
Старый 23.03.2012, 19:57
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

Цитата:
Сообщение от Пионер
У меня есть несколько типов записей, можно ли их записать в какой-нибудь тип данных, чтобы потом можно было обратиться к ним по индексу?
Можно. Как один из вариантов,обратить внимание на класс TObjectList.
Правда, при этом придется записи "преобразовать" в классы:
Код:
вместо:
TRec = record 
 ...
end;

сделать:
TRec = class
 ...
end;
Тогда "записи" разных типов можно объединить в один массив и обращаться по их индексу.
Ответить с цитированием
  #6  
Старый 23.03.2012, 20:04
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Если записи большие и имеют совершенно разные размеры, можно сделать массив указателей на эти записи.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 23.03.2012, 20:10
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

TObjectList - это и есть массив указателей на "записи", которые должны быть объявлены как классы.
Ответить с цитированием
  #8  
Старый 23.03.2012, 20:13
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

TObjectList - потомок TList, и практически повторяет все его свойства, и много еще чего лишнего... А по сути - это тот же массив, просто "удобнее" для новичков в использовании. А если обьекты нужно добавлять динамически, то еще мороки...
Ответить с цитированием
  #9  
Старый 23.03.2012, 20:15
Пионер Пионер вне форума
Прохожий
 
Регистрация: 16.02.2012
Адрес: Оренбург
Сообщения: 40
Версия Delphi: 7
Репутация: 10
По умолчанию

а можно будет потом этот класс в файл filestream записать
Ответить с цитированием
  #10  
Старый 23.03.2012, 20:17
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

case Integer of и в массив
пример:
Код:
  PMessage = ^TMessage;
  TMessage = packed record
    Msg: Cardinal;
    case Integer of
      0: (
        WParam: Longint;
        LParam: Longint;
        Result: Longint);
      1: (
        WParamLo: Word;
        WParamHi: Word;
        LParamLo: Word;
        LParamHi: Word;
        ResultLo: Word;
        ResultHi: Word);
  end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #11  
Старый 23.03.2012, 20:18
Пионер Пионер вне форума
Прохожий
 
Регистрация: 16.02.2012
Адрес: Оренбург
Сообщения: 40
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
case Integer of
Что это значит?
Ответить с цитированием
  #12  
Старый 23.03.2012, 20:23
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Пионер
Что это значит?
см. variant parts in records в файле справки
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter