Форум: "Начинающим";
Текущий архив: 2011.05.15;
Скачать: [xml.tar.bz2];
ВнизПеременные различного типа в параметре процедуры Найти похожие ветки
← →
OperaM (2011-02-04 18:58) [0]Здравствуйте!
Как извертеться , чтоб в вызываемую процедуру можно было класть неизвестное заранее число переменных различного типа, присвоить им в этой процедуре значения и вернуть их вызывающей программе. Т.е. что-то типа такого:
procedure pname( var p:array of TVarRec );
begin
p[0].VInteger:=5;
p[1].VString:="text";
end;
procedure main;
var
i:integer;
s:string;
begin
pname([i,s]);
if i=5...
end;
← →
Ega23 © (2011-02-04 19:05) [1]pointer?
← →
Плохиш © (2011-02-04 19:51) [2]
<
type
TDynVariant = array of Variant;
...
procedure pname(p:TDynVariant);
/CODE>
← →
Anatoly Podgoretsky © (2011-02-04 20:00) [3]> OperaM (04.02.2011 18:58:00) [0]
(const A:array of const)
← →
Xapakupu (2011-02-04 21:00) [4]Так как вызываемая процедура кладет значения согласно какой-то своей внутренней логике; а вызывающий код, соответственно, типа "знает", что ему вернули, и может корректно эти возвращенные значения извлечь, то напрашивается мысль, что...
...количество вариантов возвращаемых наборов "переменных" есть фиксированным и известно, в общем, еще на этапе компиляции...
...а потому, думаю, не следует идти против природы строго типизированного языка, коим является Delphi...
...и реализовать ограниченный наборперегруженных функций (oveload) со всеми вытекающими отсюда прелестями, как-то, проверкой типов еще на этапе компиляции.
Если же хочется чего-то необычного, то, думаю, следует смотреть в сторону решений по типу DB.TParams... ибо с именованными параметрами работать проще, да и с порядком следования возвращаемых данных никакой неразберихи... лишь бы с именами не напутать, да с типами данных... и, опять же таки, "грабли" полезут уже на этапе выполнения...
← →
Сергей М. © (2011-02-04 22:15) [5]Что ни день, то кладут в процедуры.
← →
KilkennyCat © (2011-02-04 23:20) [6]
> Сергей М. © (04.02.11 22:15) [5]
лучше "в", чем "на"
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.05.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c