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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.04.2011, 16:00
night_light night_light вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 20
Репутация: 10
По умолчанию инициализация динамическго массива

Здравствуйте!
Помогите пожалуйста, никак не могу понять,
как мне инициализировать константу типа запись, у которой одно из полей - динамический массив:
Код:
type
  TMyRecord = record
    Name: String;
    Value: array of TMyValue;
  end;

const
  defMyRecord: TMyRecord =
    (name: 'Название';
     Value:      // вот, что писать здесь, никак не пойму
    );
Ответить с цитированием
  #2  
Старый 13.04.2011, 16:23
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Код:
type
  MyType=record
    C: Integer;
    Values: array of Byte;
  end;

const
  a: array [0..2] of byte = (1, 23, 0);
  R: MyType = (C: 3; Values: @a);

implementation

procedure TForm1.Button1Click(Sender: TObject);
var
  i:  Byte;
begin
  for i := 0 to R.C - 1 do
  ShowMessage(IntToStr(R.Values[i]));
end;
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #3  
Старый 13.04.2011, 17:22
night_light night_light вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 20
Репутация: 10
По умолчанию

Проблема в том, что у меня элемент массива не Byte, а структура,
и получается, что вот такой код выдает ошибку при компиляции:
Код:
type
  MyValueType=record
     x,y: integer;
  end;

const
  defMyValue1: MyValueType = (x: 2; y: 3);
  defMyValue2: MyValueType = (x: 4; y: 5);

type
  MyType=record
    C: Integer;
    Values: array of MyValueType;
  end;

const
  a: array [0..1] of MyValueType = (defMyValue1, defMyValue2);
    // компилятор ругается на предыдущую строчку, 
    // точнее, на круглые скобки
  R: MyType = (C: 3; Values: @a);
Ответить с цитированием
  #4  
Старый 13.04.2011, 17:25
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Код:
type
  MyValueType=record
     x,y: integer;
  end;

  MyType=record
    C: Integer;
    Values: array of MyValueType;
  end;

const
  a: array [0..1] of MyValueType = ((x: 2; y: 3), (x: 4; y: 5));
  R: MyType = (C: 2; Values: @a);
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #5  
Старый 13.04.2011, 17:56
night_light night_light вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 20
Репутация: 10
По умолчанию

спасибо, так работает, но я предполагаю использовать константы defMyValue1, defMyValue2... не только в константе MyType, поэтому хотелось бы определить их лишь однажды, а при определении MyType использовать имена defMyValue1, defMyValue2...Это как-нибудь возможно?
Ответить с цитированием
  #6  
Старый 13.04.2011, 18:04
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

Код:
type
  MyValueType=record
     x,y: integer;
  end;

const
  defMyValue1: MyValueType = (x: 2; y: 3);
  defMyValue2: MyValueType = (x: 4; y: 5);

type
  MyType=record
    C: Integer;
    Values: array of MyValueType;
  end;

const
  a: array [0..1] of ^MyValueType = (@defMyValue1, @defMyValue2);
  R: MyType = (C: 3; Values: @a);
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #7  
Старый 13.04.2011, 18:18
night_light night_light вне форума
Прохожий
 
Регистрация: 07.04.2011
Сообщения: 20
Репутация: 10
По умолчанию

а так в R.Values[] адреса записываются (
R.Values[0].x = 4525424
R.Values[0].y = 4525432
R.Values[1].x = 3
R.Values[1].y = 4525440
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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