Форум: "Начинающим";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];
ВнизКак передать параметром массив переменной длины Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c