- Код: Выделить всё
const a = 22222222222222;
b = 22222222222333;
var dic : array[a..b] of TEntry;
Может можно как то выкрутится, объявив константы динамически чтоб добится того же эффекта?
Модератор: Модераторы
const a = 22222222222222;
b = 22222222222333;
var dic : array[a..b] of TEntry;
var
dic: array of TEntry;
vvvch писал(а):Там верхнее значение индекса всегда = 0, а нижнее как раз и задаётся SetLength
CRobin писал(а):Может можно как то выкрутится, объявив константы динамически чтоб добится того же эффекта?
type
TEntryArray = class(TObject)
protected
data: array of TEntry;
flow: Integer;
function GetEntry(i: integer): Integer;
procedure SetLow(aidx: Integer);
public
property Items[i: integer]: TEntry read GetEntry; default;
property Low: Integer read fLow write SetLow;
end;
function TEntryarray.GetEntry(i: integer): TEntry;
var
idx : integer;
begin
idx:=i-flow;
Result:=data[idx];
end;
function TEntryarray.SetLow(alow: integer): TEntry;
begin
if alow = flow then Exit
// Resize and Move Data
flow:=alow;
end;
e := @data[i].field
{ объявление типа ( Не обязательно ,что он будет таким гиганстким ) . Вообще-то длинна массива ограничена . Стоит учесть то , что размер массива зависит от разрядности системы ! Так , для 32-битной системы больше , чем ( 2097152 - 64 ) КБ создавать массив нельзя }
// объявляется тип :
TMyArray = Array of тип ;
// переменная с типом :
MyArray : TMyArray ;
//применение:
//Установить начальное значние массива :
SetLength (MyArray , 10 ) //массив будет иметь 10 индексов ( 0 .. 9 );
// констант не надо )
//измерить размер массива можно функцией Length
Сейчас этот форум просматривают: Google [Bot] и гости: 250