Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Структурировать массив


Автор: maestro2k 30.10.2007, 20:35
Как в делфи сделать сие: Есть указатель (pointer) на массив данных и есть структура. Как так оригинально оформить чтоб типизиированая переменная указывала на этот массив.

Код

//непример:
//массив: 01,02,03 

//структура: 
type
TStr = packed record
  A: byte;
  B:word;
end;

var
  Str: TStr; //чтоб данные были доступны из этой переменной

Автор: MetalFan 30.10.2007, 21:11
сам то понял что написал?

Добавлено через 4 минуты и 15 секунд
Код

var
  lPStr: ^TStr;
begin
  lPStr := SomePointer;
  lPStr^.A := 10;
  lPStr^.B := 100;

Автор: maestro2k 30.10.2007, 21:40
все там нормально написано.
MetalFan, сенкс.

Автор: bems 30.10.2007, 21:43
Код

var
  Str: TStr absolute MyArray


Добавлено через 1 минуту и 5 секунд
сори, тут MyArray не указатель, а сам массив

Автор: maestro2k 11.11.2007, 14:44
Немного не то..
Есть структура, и динамический массив. 
Код

ТMyStruct = packed record
  A : BYTE;
  B : BYTE;
  C : BYTE;
end;

var
  MyArray: Array of TMyStruct;
  P: Pointer;


Количество елементов в массиве нужно создавать во время выполнения кода. После создания нужной мне "структуры" ее нужно положить на участок памяти по адресу P.
Тоесть типа такого...
Код

MyArray:= P;

Как это сделать подскажите люди добрые!  smile 


Автор: VICTAR 11.11.2007, 14:48
Если я тебя правильно понял, то тебе лучше использовать TList он как раз предназначен для работы с указателями

Автор: Alexeis 11.11.2007, 16:22
Цитата(maestro2k @  30.10.2007,  20:35 Найти цитируемый пост)
Как так оригинально оформить чтоб типизиированая переменная указывала на этот массив.

  Переменная это переменная, а указатель это указатель. Можно только что чтобы типизированный указатель указывал на массив.

Автор: stab 11.11.2007, 16:30
Например вот так:

Код

type
  ТMyStruct = packed record
    A : BYTE;
    B : BYTE;
    C : BYTE;
  end;

  TMyArray = array[0..1023] of ТMyStruct;
  PMyArray = ^TMyArray;

var
  myStruct: ТMyStruct;
  myArray: PMyArray;

begin
  myArray := @myStruct;
  myArray[0].A := 100;

  // осторожно!
  myArray[100].A := 100;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)