powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Динамическая структура
13 сообщений из 13, страница 1 из 1
Динамическая структура
    #39657938
Поголосый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каким образом можно создать динамическую структуру - равную record ?

Может уже есть наработки? За 23 года

Есть предположение, что через getmem выделяем нужный size всех элементов, и при обращение делать нужный offset (А как рассчитать его? По человечески)


Я всё правильно понимаю?
...
Рейтинг: 0 / 0
Динамическая структура
    #39657945
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ПоголосыйКаким образом можно создать динамическую структуру - равную record ?

Может уже есть наработки? За 23 года

Есть предположение, что через getmem выделяем нужный size всех элементов, и при обращение делать нужный offset (А как рассчитать его? По человечески)


Я всё правильно понимаю?
если ты за 23 года ничего не понял, то пора идти продавцом в макдональдс
...
Рейтинг: 0 / 0
Динамическая структура
    #39657947
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поголосый> Каким образом можно создать динамическую структуру - равную record ?

?

Нужен record, но чтобы память вручную выделять или что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическая структура
    #39657948
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПоголосыйКаким образом можно создать динамическую структуру - равную record ?

Может уже есть наработки? За 23 года

Есть предположение, что через getmem выделяем нужный size всех элементов, и при обращение делать нужный offset (А как рассчитать его? По человечески)


Я всё правильно понимаю?


да. Вычисли размер записи и выдели память нужной величины Но придется явно приводить к нужному типу (к записи, например).
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
type
  RMyRec = record
    i : integer;
    d : Double;
  end;
var
  pV: Pointer;
begin
  GetMem(pV, SizeOf(RMyRec));



Или просто объяви нужный тип и тип-указатель, и вызови New():

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
type
  RMyRec = record
    i : integer;
    d : Double;
  end;
  pMyRec = ^RMyRec;
...
var
  pR : pMyRec;
begin
  New(pMyRec);



Или объяви массив элементов нужного типа и по мере надобности задавай нужную длину:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
type
  RMyRec = record
    i : integer;
    d : Double;
  end;

var
  fAR : array of RMyRec;
begin
  SetLength(fAR, 333); 


Хотя, наверное, с массивом не совсем то, что ты хочешь.
...
Рейтинг: 0 / 0
Динамическая структура
    #39657952
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД> Но придется явно приводить к нужному типу (к записи, например).

Совести. У Вас. Нет. (с) ГПХ

Нельзя в 2018 году человеку нетипизированные указатели советовать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическая структура
    #39657955
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамчччД> Но придется явно приводить к нужному типу (к записи, например).

Совести. У Вас. Нет. (с) ГПХ

Нельзя в 2018 году человеку нетипизированные указатели советовать.

Ты не удаляй это сообщение, я обязательно припомню и сюда ссылаться буду.
...
Рейтинг: 0 / 0
Динамическая структура
    #39657972
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД__,

Припоминай, что хочешь. Тамнужно было просто объявить тип как указатель на ту структуру и память выделять ему при помощи AllocMem(), которая заодно ее обнулит. Все.
...
Рейтинг: 0 / 0
Динамическая структура
    #39658005
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПоголосыйКаким образом можно создать динамическую структуру - равную record ?

Есть разные варианты в зависимости от того как ты её потом использовать собираешься.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическая структура
    #39658007
Поголосый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если динамически, значит динамически. Что - то вроде

Код: pascal
1.
2.
3.
s = TRecord.create('string,int,double');
s.write(Idx, value);
v = s.read(Idx);
...
Рейтинг: 0 / 0
Динамическая структура
    #39658008
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, ночной тролль.
...
Рейтинг: 0 / 0
Динамическая структура
    #39658009
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПоголосыйЕсли динамически, значит динамически. Что - то вроде

Код: pascal
1.
2.
3.
s = TRecord.create('string,int,double');
s.write(Idx, value);
v = s.read(Idx);


Гугли "Delphi superobject"
...
Рейтинг: 0 / 0
Динамическая структура
    #39658015
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поголосый> Что - то вроде s = TRecord.create('string,int,double');

Методы в рекордах в Delphi появились черти когда, ещё в D2006.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Динамическая структура
    #39658037
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПоголосыйКаким образом можно создать динамическую структуру - равную record ?

Может уже есть наработки? За 23 года

Есть предположение, что через getmem выделяем нужный size всех элементов, и при обращение делать нужный offset (А как рассчитать его? По человечески)


Я всё правильно понимаю?

JS, даже оффсеты вычислять не надо )
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Динамическая структура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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