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

Вниз

Как передать параметром массив переменной длины   Найти похожие ветки 

 
noob_one   (2008-10-10 13:53) [0]

без создания переменной этого типа?

В процедуру надо передавать массив структур вида (целое, строка, вещественное)?

пока реализовано так

 param=record
       Vnum:integer;
       Fname:string;
       mult:Double;
      end;

procedure proc(const par: array of param);
begin ... end;

var p1: array of param;

begin
SetLength(p1,1);
p1[0].Vnum:=1;
p1[0].fname:="test";
p1[0].mult:=1.2;

proc(p1);



Есть какой нибудь способ передавать такие массивы без явного создания переменных для передачи?

Что-нибудь типа такого?


begin
...
proc( ((1,"test",1.2)) );
...
   


 
Правильный$Вася   (2008-10-10 14:01) [1]

а что, жалко 4 байта под переменную?


 
noob_one   (2008-10-10 14:10) [2]

сравните

SetLength(p1,4);
p1[0].Vnum:=1;
p1[0].fname:="test";
p1[0].mult:=1.2;
p1[1].Vnum:=2;
p1[1].fname:="test1";
p1[1].mult:=0.8;
p1[2].Vnum:=4;
p1[2].fname:="test2";
p1[2].mult:=1.3;
p1[3].Vnum:=5;
p1[3].fname:="test5";
p1[3].mult:=1.5;


и

proc( ((1,"test",1.2),(2,"test1",0.8),(4,"test2",1.3),(5,"test5",1.5))  );

размер может быть до 10 и вызывать надо часто. Возиться не хочется.


 
MBo ©   (2008-10-10 14:25) [3]

напиши функцию, создающую переменную типа param из составляющих (подобно функции Point), и ее можно будет использовать в конструкторе открытого массива


 
sniknik ©   (2008-10-10 14:27) [4]

> пока реализовано так

param=record
      Vnum:integer;
      Fname:string;
      mult:Double;
     end;

function p(vVnum: integer; const vFname: string; vMult: Double): param;
 begin
   with result do begin
     Vnum := vVnum ;
     Fname:= vFname;
     mult := vMult;
   end;
 end;

procedure proc(const par: array of param);
begin ... end;

proc([p(1,"test",1.2),p(2,"test1",0.8),p(4,"test2",1.3),p(5,"test5",1.5)]);


 
noob_one   (2008-10-10 14:36) [5]

Спасибо :)


 
oldman ©   (2008-10-10 14:52) [6]


> noob_one   (10.10.08 14:10) [2]
> сравните
> ...
> вызывать надо часто. Возиться не хочется.


Здравствуйте, Лентяй!


 
noob_one   (2008-10-10 15:46) [7]


> oldman

А вы любите писать пустой код? Может вы еще и циклы раскрываете?


 
Renegat ©   (2008-10-10 15:50) [8]

> [7] noob_one   (10.10.08 15:46)

Разворачивание "коротких" циклов - вещь очень полезная в плане оптимизации по скорости.
Хотя нет, у нас же тут Делфи... =)



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
15-1222164477
Alkid
2008-09-23 14:07
2008.11.23
Недетерминистические алгоритмы


15-1222450529
No_Dead(work)
2008-09-26 21:35
2008.11.23
зачем нужен *.ion?


4-1200394661
Lamer666
2008-01-15 13:57
2008.11.23
Как организовать таймер в программе без формы?


15-1222008803
Синий Палец
2008-09-21 18:53
2008.11.23
Английский Язык


15-1222006281
@!!ex
2008-09-21 18:11
2008.11.23
Где взять StarCraft с полной озвучкой(русской или английской)