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

Вниз

функция / процедура   Найти похожие ветки 

 
kcol   (2006-10-20 21:23) [0]

Глупый вопрос, только начинаю изучать delphi.
Возможно ли в delphi сделать процедуру / функцию с открытым количеством входящих параметров. Т.е. приблизительно так:

fucntion AddToList(? :string): Boolean;
А вызвать её например так:
AddToList("my1ststring", "my2ndstring", "next", "next again");

Спасибо!


 
RASkov   (2006-10-20 21:31) [1]

fucntion AddToList(S :array of string): Boolean;
вызов AddToList("my1ststring", "my2ndstring", "next", "next again");

использование внутри
for i:= Low(S) to High(S) do begin
Result:=S[i]="bla";
if Result then Break;
end;


 
kcol   (2006-10-20 21:37) [2]

Я что-то не то делаю? Не понимаю: Constants cannot be used as open array arguments.


 
RASkov   (2006-10-20 21:42) [3]

> [2] kcol   (20.10.06 21:37)

Приведи свой кусок кода.


 
RASkov   (2006-10-20 21:46) [4]

Блин, ну конечно же вызов не так делать надо, извеняюсь.
AddToList(["my1ststring", "my2ndstring", "next", "next again"]);


 
kcol   (2006-10-20 21:51) [5]

Спасибо! А всё равно, вопрос интересен, в данном случае мы сделали открытый массив и соответственно при вызове функции использовали массив. А можно например вместо открытого массива использовать отдельные входящие параметры процедуры?


 
RASkov   (2006-10-20 21:53) [6]

> [4] RASkov   (20.10.06 21:46)

Ну вот опять от Подгорецкого словлю:( за [1].
Вовремя поднятое несчитается уроненым:)


 
RASkov   (2006-10-20 21:54) [7]

> А можно например вместо открытого массива использовать
> отдельные входящие параметры процедуры

Что имеешь ввиду? может это:
procedure NameProc(AConst :array of const);


 
Ketmar ©   (2006-10-20 21:59) [8]

есть подозрение, что автору просто больно писать "[" и "]".


 
kcol   (2006-10-20 22:00) [9]

Я говорю про что-то вроде writeln в консольном приложении.

 Writeln("Test", 1, 2, 3, "Test", "Again", 1, 2);

Можно так вызывать свою функцию или процедуру? просто инетресно. (т.е. без открытого массива)


 
Ketmar ©   (2006-10-20 22:02) [10]

нельзя.


 
kcol   (2006-10-20 22:03) [11]

Все понятно. Спасибо за ответы!


 
Ученик чародея ©   (2006-10-20 22:12) [12]

Читать.

Некоторые библиотечные подпрограммы языка Delphi принимают параметры типа array of const - открытые массивы констант. Массив, передаваемый в качестве такого параметра, обязательно конструируется в момент вызова подпрограммы и может состоять из элементов различных типов (!). Физически он состоит из записей типа TVarRec, кодирующих тип и значение элементов массива (записи рассматриваются ниже). Открытый массив констант позволяет эмулировать подпрограммы с переменным количеством разнотипных параметров и используется, например, в функции Format для форматирования строки (см. выше).

http://ww.delphikingdom.ru/asp/viewitem.asp?catalogid=1182

Думать.


 
RASkov   (2006-10-20 22:16) [13]

> [12] Ученик чародея ©   (20.10.06 22:12)

Ну да... я ему в [7] это и написал но видимо [8]:)


 
Anatoly Podgoretsky ©   (2006-10-20 22:16) [14]


> Writeln("Test", 1, 2, 3, "Test", "Again", 1, 2);
>
> Можно так вызывать свою функцию или процедуру? просто инетресно.
>  (т.е. без открытого массива)

Можно, а что открытый массив религия использовать не позволяет?


 
kcol   (2006-10-20 22:19) [15]

Да причем тут религия или боль, просто интересно стало; Если глупый вопрос -- я извиняюсь.


 
TUser ©   (2006-10-20 22:27) [16]

Удалено модератором


 
RASkov   (2006-10-20 22:30) [17]

function NameFunc(const Args: array of const): Boolean;
var i: Integer;
begin
 for i:= Low(Args) to high(Args) do
  case Args[i].VType of
   vtInteger: оператор(ы);
   vtBoolean: оператор(ы);
   vtChar: оператор(ы);
   vtExtended: оператор(ы);
   vtString: оператор(ы);
   .....
  else оператор(ы); end;
end;


 
Ketmar ©   (2006-10-20 22:32) [18]

>[16] TUser(c) 20-Oct-2006, 22:27
>xbnfq щзут фккфны d cghfdrt
в [12] эту тему даже дали на русском. %-)

зыж не все умеют читать "перевёртыши". %-)

>[15] kcol 20-Oct-2006, 22:19
>Если глупый вопрос -- я извиняюсь.
не самый глупый из тех, что тут бывают. %-)
подобные вызовы можно делать только для импортируемых из DLL функций с соглашением cdecl. но подозреваю, что это тебе уж точно не надо. %-)


 
TUser ©   (2006-10-20 22:46) [19]

> Ketmar ©   (20.10.06 22:32) [18]

Ууу, точно!


 
Leonid Troyanovsky ©   (2006-10-21 11:40) [20]


> kcol   (20.10.06 21:51) [5]

> мы сделали открытый массив и соответственно при вызове функции
> использовали массив. А можно например вместо открытого массива
> использовать отдельные входящие параметры процедуры?


function ArrToStr(a: array of String): String;
var
 i: Longint;
begin
 Result := "";
 for i := Low(a) to High(a) do
   Result := Result + " " + a[i];
end;

procedure TForm1.Button2Click(Sender: TObject);
const
 maxa = 3;
var
 a : array [0..9] of String;
 i: Longint;
begin
 for i := 0 to maxa do
   a[i] := IntToStr(i);
 ShowMessage(ArrToStr(Slice(a, maxa+1)));
end;


--
Regards, LVT.



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

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

Наверх




Память: 0.49 MB
Время: 0.041 c
15-1160984910
Shorokhov
2006-10-16 11:48
2006.11.05
Оцените задачку


15-1160743963
Ketmar
2006-10-13 16:52
2006.11.05
облазил кучу сайтов. или дают один-два альбома, или и того хуже. не подскажете, где их можно нормально скачать? начиная с "Восхода Чёрной Луны" и вниз. %-) качество устроит даже 128 kbps (всё равно потом куплю диски).


2-1161250863
Axis_of_Evil
2006-10-19 13:41
2006.11.05
работа с XML документом


15-1161010468
oldman
2006-10-16 18:54
2006.11.05
Вчера вычитал, откуда пошло слово "спам"...


15-1160337818
Knight
2006-10-09 00:03
2006.11.05
Подскажите... такие приборы ещё производят?





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