powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запутался TArray<record> const
19 сообщений из 19, страница 1 из 1
Запутался TArray<record> const
    #40033802
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не могу сообразить, как такое записать? мож в cre записи как-то? Поле записи может быть тоже не простого типа

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
type
  TMyRec = record
    fld1: integer;
    fld2: string;
    fld3: currency;
  end;

  tMyArray = TArray<TMyRec>

const
  amr: tMyArray = ( (fld1: 1; fld2: 'a'; fld3: 1,11), (fld1: 2; fld2: 'b'; fld3: 2,22), (fld1: 1; fld2: 'c'; fld3: 1,33) )
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40033804
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

Вообще, если тебе нужна константа - динамический массив, то она записывается так:
Код: pascal
1.
2.
const
  SomeConst: TItemDynArray = [item1, item2, ....];


Но инициализация динамических массивов с записями не работает, облом.
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40033805
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
antox,

Вообще, если тебе нужна константа - динамический массив, то она записывается так:
Код: pascal
1.
2.
const
  SomeConst: TItemDynArray = [item1, item2, ....];


Но инициализация динамических массивов с записями не работает, облом.


Можно не динамический, кол-во элементов известно :)
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40033806
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

Ну тогда, теоретически, как у тебя в примере должно работать, проверь.
Я просто с динамическими сам недавно обломался, а со статическими не помню уже.
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40033816
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  TMenuItem = record
    Name, Frame: string;
    ImageName: string;
    Complete: Boolean;
    MenuIndex: integer;
  end;

  var
  AppMenu: array [1..7] of TMenuItem = (
    (Name:'1';                  Frame:'Documents';   ImageName: 'documents.png'; Complete: False),
    (Name:'2';    Frame:'Marks';       ImageName: 'marks.png';     Complete: False),
    (Name:'3';  Frame:'Plan';        ImageName: 'plans.png';     Complete: False),
    (Name:'4';                     Frame:'Vip';         ImageName: 'vip.png';       Complete: False),
    (Name:'5';  Frame:'Achievement'; ImageName: 'address.png';           Complete: False),
    (Name:'6';          Frame:'Blank';          ImageName: 'blank.png';             Complete: True),
    (Name:'7';      Frame:'Check';          ImageName: 'application.png';       Complete: false)
//  (Name:'8';       Frame:'View';           ImageName: 'info.png';              Complete: True)
  );
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40033982
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, с обычным массивом всё получилось.

Проблема немногого изменилась :)

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

Код: pascal
1.
2.
3.
4.
5.
6.
unit hidden;

...

const
  amr: array [0..7] of TMyRec = ( (fld1: 1; fld2: 'a'; fld3: 1,11), (fld1: 2; fld2: 'b'; fld3: 2,22), (fld1: 1; fld2: 'c'; fld3: 1,33) );



С типами так получается, и с константами простых типов тоже, а с массивами так не получилось :)


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
unit visible;

interface

uses hidden;

const
  a: array [0..7] of TMyRec  = amr;



Помогите разобраться, как это можно организовать. Имя массива в visible модуле, как и сами общие модули могут быть разными в разных приложениях, это не должно влиять на содержимое hidden модуля
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40033985
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче сделал класс и всё :)

Плохо, что в Delphi не видно объявленные типы в модулях, которые объявлены в модулях, которые объявлены в модулях, как это седлано в php, приходится в каждом модуле делать ссылку на все модули или наследоваться
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034037
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

отлично, что в Delphi не видно объявленные типы в модулях, которые объявлены в модулях. хватит этого г-на в плюсах (если не путаю) и пхп.
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034071
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
unit MyTypes;

interface

type 
   TMyRecArray = array [0..7] of TMyRec;

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
unit hidden;

interface

uses MyTypes;

const
  amr: TMyRecArray = ( (fld1: 1; fld2: 'a'; fld3: 1,11), (fld1: 2; fld2: 'b'; fld3: 2,22), (fld1: 1; fld2: 'c'; fld3: 1,33) );

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
unit visible;

interface

uses MyTypes, hidden;

const
  a: TMyRecArray = amr;



На зачем вообще нужна эта свистопляска с видимыми/скрытыми юнитами я не понял. Костыль какой-то.
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034105
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНа зачем вообще нужна эта свистопляска с видимыми/скрытыми юнитами я не понял. Костыль какой-то.

Для того вот что бы всякую фигню по модулям не писать В которой фиг что разберешь.
1. Все типы описываем в одном модуле, который не использует ни одни твой же модуль.
2. Во всех модулях, где нужны свои типы пишем uses первого модуля.
Всё.
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034110
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константы можешь описать в том же модуле, где типы.
Переменные описываешь в том модуле, где используются.
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034118
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaon
Константы можешь описать в том же модуле, где типы.
Переменные описываешь в том модуле, где используются.

Имхо это аксиома программирования.
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034135
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener,

судя по коду antox'и не для всех
вот что бы не было позывов разводить кашу в сырцах в паскале и сделано так как сделано: противоестественные идеи должны приводить к максимальному геморрою. и это отлично. отбивает охоту писать всякую дичь в исходниках.
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034141
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

Ну да, лучше современные подходы, когда 2 + 2 = '22' :D
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034166
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp> Ну да, лучше современные подходы, когда 2 + 2 = '22' :D

При расчёте зарплаты может оказаться полезным. :)
(хотя сам ролик идиотский и неприятный, ИМХО)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034536
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon
Константы можешь описать в том же модуле, где типы.
Переменные описываешь в том модуле, где используются.


Так я и сделал, но мне надо вывести список в комбобокс формы значений этой константы, пришлось открыть доступ к этому модулю для формы
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034747
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,

это нормально.
повторю. один модуль со всеми описанными мелкими типами и константами, который использует исключительно встроенные delphi модули.
остальные модули используют только этот модуль для того, что бы увидеть нужные объявления констант и типов. между такими модулями связей может не быть вообще. по надобности.

Код: 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.
Unit MyTypes;

interface

uses
 Types,
 Classes;

Type
....
Const
...

Unit Unit1;

uses
 MyTypes;

Unit Unit2;

uses
 MyTypes;

Unit Unit3;

uses
 MyTypes;
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034748
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
33.
34.
35.
36.
unit MyTypes;

interface

type 
   TMyRecArray = array [0..7] of TMyRec;

const
  amr: TMyRecArray = ( (fld1: 1; fld2: 'a'; fld3: 1,11), (fld1: 2; fld2: 'b'; fld3: 2,22), (fld1: 1; fld2: 'c'; fld3: 1,33) );

unit Unit1;

interface

uses MyTypes;

const
  a: TMyRecArray = amr;

unit Unit2;

interface

uses MyTypes;

const
  a: TMyRecArray = amr;

unit Unit3;

interface

uses MyTypes;

const
  a: TMyRecArray = amr;
...
Рейтинг: 0 / 0
Запутался TArray<record> const
    #40034774
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запутался TArray<record> const
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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