powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Добавление TRecordType в TList<TRecordType>
10 сообщений из 10, страница 1 из 1
Добавление TRecordType в TList<TRecordType>
    #39648182
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стандартная ситуация.
Есть тип:
Код: pascal
1.
2.
3.
TRecordType = 
  A,B: integer
end;


И нужно создать список, добавив эти данные:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
TRecList = TList<TRecordType>;
...

var rt: TRecordType; Lst: TRecList;
begin
  Lst := TRecList.Create;
  for i := 0 to 10
  begin
    rt.a := i * 1;
    rt.b := i * 2;
    Lst.Add(rt);
  end;
end



И вот я понимаю, что это ведь косяк - каждая запись ссылается на одно и тоже место памяти. Или все таки происходит копирование нового значения?
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648198
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Промешан_,

record скопируется...
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648204
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zinpub_Промешан_,

record скопируется...
То есть не будет одинаковых записей?
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648205
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Промешан_,
Одинаковых, в смысле ссылающихся в одно место, не будет.
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648206
_Промешан_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zinpub_Промешан_,
Одинаковых, в смысле ссылающихся в одно место, не будет.
Спасибо.
Проверил, так и есть.

Я так понимаю там где то есть проверка объект на входе или нет и в зависимости от этого происходит или создание памяти под данные или запись ссылки.
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648214
zinpub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Промешан_,

record - управляемый тип, ссылку надо ручками получать...
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648263
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и по идее утечка. кто потом освободит память?
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648264
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkin,

Не идет.

Но вот доступ через "Lst[n].A:=" сделать не выйдет. Придеться целиком весь рекорд присваивать.
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648290
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
type
  TRecordType = record
  strict private
    FA: Int32;
    FB: Int32;
  public
    constructor Create(const A, B: Int32);
    property A: Int32 read FA;
    property B: Int32 read FB;
  end;

  TRecordTypeList = TList<TRecordType>;

implementation
{ TRecordType }

constructor TRecordType.Create(const A, B: Int32);
begin
  FA := A;
  FB := B;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  List: TRecordTypeList;
  i: Int32;
begin
  List := TRecordTypeList.Create();
  for i := 0 to 10 do
    // Так красивее
    List.Add(TRecordType.Create(i * 1, i * 2));
end;
...
Рейтинг: 0 / 0
Добавление TRecordType в TList<TRecordType>
    #39648300
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatНо вот доступ через "Lst[n].A:=" сделать не выйдет. Придеться целиком весь рекорд присваивать.
Код: pascal
1.
Lst.List[n].A := ....;
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Добавление TRecordType в TList<TRecordType>
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]