Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Внизфункция / процедура Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.067 c