uses WinCRT; procedure TForm1.Button1Click(Sender: TObject); var MyArray: array[0..30] of char;b: ^char;i: integer;begin StrCopy(MyArray, 'Спасибо Ллойду за помощь!!!');b := @MyArray;for i := StrLen(MyArray) downto 0 dobeginwrite(b^);inc(b, sizeof(char));end;end; |
Скажем, ваша структура данных выглядит похожей на эту:
typeTMyStructure = recordName: String[40];Data: array[0..4095] of Integer;end; |
Она слишком большая для глобального распределения, так что вместо объявления глобальной переменной,
varMyData: TMyStructure; |
объявляете указательный тип,
typePMyStructure = ^TMyStructure; |
и переменную этого типа,
varMyDataPtr: PMyStructure; |
Такой указатель занимает всего лишь четыре байта сегмента данных.
Прежде, чем вы сможете использовать структуру данных, вы должны распределить ее в куче:
New(MyDataPtr); |
и получить к ней доступ через глобальные данные любым удобным для вас способом. Единственное отличие от традиционного способа заключается в необходимости использования символа "^" для обозначения указателя на данные:
MyDataPtr^.Name := 'Советы по Delphi';MyDataPtr^.Data[0] := 12345; |
И, наконец, после использования памяти, освободите ее:
Dispose(MyDataPtr); |
[000936]