Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
Ученик   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.009 c
1-98189
Новенький в Делфи
2002-09-18 00:07
2002.09.30
Обработчик событий в другом модуле. Как сделать?


1-98187
AndreyS
2002-09-18 11:08
2002.09.30
Стиль


3-97999
ip2000
2002-09-10 12:51
2002.09.30
Вставика данных из текстового файла в таблицу


1-98161
antonioxxx
2002-09-15 09:06
2002.09.30
Проблема с компиляцией.


1-98172
Taa
2002-09-17 18:14
2002.09.30
Работа с массивами Variant





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский