Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.30;
Скачать: CL | DM;

Вниз

Создание динамических массивов   Найти похожие ветки 

 
Ученик ©   (2002-09-19 09:20) [0]

function CreateDynArray(Elements : array of const) : Pointer;
Может у кого-нибудь есть готовая реализация ?


 
Separator ©   (2002-09-19 09:46) [1]

var
DynArray: array of array of const;
ArraysCreate: array of boolean;
ArraysCount: word = 0;

function CreateDynArray: integer;
var
Res: integer;

procedure AddArrayEnd;
begin
Inc(ArraysCount);
SetLength(DynArray, ArraysCount);
SetLength(DynArray[ArraysCount-1], 1);
SetLength(ArraysCreate, ArraysCount);
ArraysCreate(ArraysCount-1):= true;
Res:= ArraysCount-1
end;

procedure AddArrayNotEnd(N: word);
begin
SetLength(DynArray[N], 1);
ArraysCreate(N):= true;
Res:= N
end;

begin
Result:= -1;
if ArraysCount<>0 then
begin
for i:= 0 to ArraysCount-1 do
if not ArraysCreate[i] then
begin
AddArrayNotEnd(i);
break
end;
if Res=-1 then
AddArrayEnd
end
else
AddArrayEnd;
Result:= Res
end;

procedure DynArrayDestroy(N: word)
var
i: integer;
begin
if N<ArraysCount then
begin
SetLength(DynArray[N], 0);
ArraysCreate(N):= false
for i:= ArraysCount-1 downto 0 do
if not ArraysCreate(i) then
begin
Dec(ArraysCount);
SetLength(DynArray, ArraysCount);
SetLength(ArraysCreate, ArraysCount)
end
else
break
end
end;

В общем попробуй так, правда я тока счас написал, но вроде работает :)


 
Ученик ©   (2002-09-19 09:55) [2]

>Separator © (19.09.02 09:46)
Спасибо, но имелось ввиду немного другое (когда ж я научусь вопросы задавать)

type
TIntegerArray = array of Integer;
TFontArray = array of TFont;

procedure TForm1.Button1Click(Sender: TObject);
var
A : TIntegerArray;
F : TFontArray;
begin
A := CreateDynArray([1, 2, 3, 4]);
F := CreateDynArray([Font1, Font2, Font3, Font4]);
end;


 
Separator ©   (2002-09-19 10:00) [3]

А не легче тщгда сделать так:

procedure TForm1.Button1Click(Sender: TObject);
var
A : TIntegerArray;
F : TFontArray;
begin
SetLength(A, 4);
A:= [1,2,3,4];
end;



 
Ученик ©   (2002-09-19 10:05) [4]

>Separator © (19.09.02 10:00)
?????


 
Alx2 ©   (2002-09-19 10:15) [5]

>Ученик © (19.09.02 10:05)
В стремлении к универсальности? :)

Совсем не то, правда, но где-то рядом :):
function VarArrayOf(const Values: array of Variant): Variant;


 
Separator ©   (2002-09-19 10:17) [6]

> немного не правильно :))


 
Ученик ©   (2002-09-19 10:25) [7]

>Alx2 © (19.09.02 10:15)
Развивая-DynArrayFromVariant, но тоже не то, надеялся, что у кого-нибудь есть готовое.


 
Separator ©   (2002-09-19 10:28) [8]

Готовое врядли у кого-нибудь найдется, попробуй сам написать, это будет намного проще, так как сделаешь именно то, что тебе нужно


 
Ученик ©   (2002-09-19 10:45) [9]

Задача всплывает в том или ином виде на форуме постоянно, наверно, было бы полезно многим


 
Separator ©   (2002-09-19 10:51) [10]

Я наверное не доконца понял, что нужно сделать


 
Ученик ©   (2002-09-19 11:28) [11]

Забавно,

procedure TForm1.Button1Click(Sender: TObject);
var
A : TIntegerArray;
begin
A := CreateDynArray([1, 2, 3, 4]);

В A значение не попадает, но адрес A передается в ECX


 
qube ©   (2002-09-19 11:32) [12]

procedure DynArrayFromVariant(var DynArray: Pointer; const V: Variant; TypeInfo: Pointer);

Description

Call DynArrayFromVariant to copy the contents of a variant (V) to an existing dynamic array variable (DynArray).

DynArray is a dynamic array variable whose value is assigned from the Variant.

V is the Variant to copy. Its value must be an array.

TypeInfo points to the runtime type information that identifies the type of array elements. You can obtain this pointer using the TypeInfo function.


 
Ученик ©   (2002-09-19 11:48) [13]

>qube © (19.09.02 11:32)
Ученик © (19.09.02 10:25)



Страницы: 1 вся ветка

Текущий архив: 2002.09.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
3-97957
Сергей Крылов
2002-09-09 09:01
2002.09.30
Почему TopPlan мешает работать прогамме


14-98321
MAXHO
2002-09-04 23:29
2002.09.30
Помогите начинающему програмисту-игроделу :)


1-98114
Вэн.
2002-09-20 09:56
2002.09.30
Интернет поисковик


1-98200
Exteris
2002-09-18 13:48
2002.09.30
TEdit


14-98262
VEG
2002-09-01 14:19
2002.09.30
Издеваемся над вениками:-)