|
Вопрос # 971/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
как передать массив
var
arrStr : array [1..3] of string =('str1', 'str2', 'str3');
в процедуру ?
procedure P1(array1 : array of Variant);
Делаю так :
...
begin
P1(arrStr);
...
компилятор ругается на несопоставление типо
 |
Вопрос задал: Сидаровский Георгий (статус: Посетитель)
Вопрос отправлен: 11 октября 2007, 12:54
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Иусов Сергей Ник.
Здравствуйте, Сидаровский Георгий!
можно попробовать вот так:
var
varr:array of variant;
i:integer;
c:integer;
begin
SetLength(varr,3);
c:=1;
for i:=Low(varr) to High(varr) do
begin
varr[i]:=arrStr[c];
inc(c);
end;
P1(varr);
end;
хотя вариантик так себе. Может быть можно массив изначально не строковой, а вариантный задать?
 |
Ответ отправил: Иусов Сергей Ник. (статус: 3-ий класс)
Время отправки: 11 октября 2007, 13:26
|
Ответ #2. Отвечает эксперт: xamall
Здравствуйте, Сидаровский Георгий!
Насколько я знаю в дельфи нельзя передавать массив в качестве параметра.
В вашем случае можно воспользоваться переменной типа TStringLIST.Или объявить свой тип и создать переменную этого типа.
Пример в приложении.
Приложение: Переключить в обычный режим- var s: TStringList;
- begin
- s:=tstringlist.create;
- s.add('str1');
- s.add('str2');
- .....
- P1(s);
- s.free;
- end;
-
- procedure f1(s: tstringlist );
- var sst: string;
- I: integer;
- begin
- sst:=s.strings[1];
- ....
- end;
-
-
-
 |
Ответ отправил: xamall (статус: 1-ый класс)
Время отправки: 12 октября 2007, 03:04
|
Мини-форум вопроса
Всего сообщений: 6; последнее сообщение — 11 октября 2007, 14:08; участников в обсуждении: 3.
|
Вадим К (статус: Академик), 11 октября 2007, 13:15 [#1]:
а менять определение функции нельзя?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Сидаровский Георгий (статус: Посетитель), 11 октября 2007, 13:21 [#2]:
В том то и дело что нельзя.
мне нужно использовать именно эту процедуру.
|
|
Вадим К (статус: Академик), 11 октября 2007, 13:24 [#3]:
и объявление массива тоже нельзя трогать?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Сидаровский Георгий (статус: Посетитель), 11 октября 2007, 13:33 [#4]:
Обьявление можно менять. самое главное что массив должен быть из строк
|
|
Иусов Сергей Ник. (статус: 3-ий класс), 11 октября 2007, 13:38 [#5]:
Ну и объявляй массив как вариантный, а заполняй строками. Тогда будет прекрасно работать.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|