Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запутался TArray<record> const / 19 сообщений из 19, страница 1 из 1
06.01.2021, 13:09
    #40033802
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
Никак не могу сообразить, как такое записать? мож в 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
06.01.2021, 13:17
    #40033804
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
antox,

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


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

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


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


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

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

Код: 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
07.01.2021, 03:30
    #40033982
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
Да, с обычным массивом всё получилось.

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

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

Код: 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
07.01.2021, 05:23
    #40033985
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
Короче сделал класс и всё :)

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

отлично, что в Delphi не видно объявленные типы в модулях, которые объявлены в модулях. хватит этого г-на в плюсах (если не путаю) и пхп.
...
Рейтинг: 0 / 0
07.01.2021, 19:06
    #40034071
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
Код: 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
08.01.2021, 00:10
    #40034105
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
авторНа зачем вообще нужна эта свистопляска с видимыми/скрытыми юнитами я не понял. Костыль какой-то.

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

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

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

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

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


Так я и сделал, но мне надо вывести список в комбобокс формы значений этой константы, пришлось открыть доступ к этому модулю для формы
...
Рейтинг: 0 / 0
11.01.2021, 00:04
    #40034747
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
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
11.01.2021, 00:07
    #40034748
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
Код: 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
11.01.2021, 06:22
    #40034774
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запутался TArray<record> const
Спасибо
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запутался TArray<record> const / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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