Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1297093264
Test_unit
2011-02-07 18:41
2011.05.15
Выделить память в dll


2-1297326626
Максон
2011-02-10 11:30
2011.05.15
как открыть вордовский документ с помощью OpenDialog


15-1296586073
cross
2011-02-01 21:47
2011.05.15
Стоит ли покупать MacBook


15-1296651069
Сергей М.
2011-02-02 15:51
2011.05.15
Удал.доступ к виндовому раб.столу и ввод кириллицы в DOS-прил-я


2-1297333704
cross
2011-02-10 13:28
2011.05.15
Как создать documentElement





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский