Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 971

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
как передать массив
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.Или объявить свой тип и создать переменную этого типа.
Пример в приложении.

Приложение:
  1. var s: TStringList;
  2. begin
  3. s:=tstringlist.create;
  4. s.add('str1');
  5. s.add('str2');
  6. .....
  7. P1(s);
  8. s.free;
  9. end;
  10.  
  11. procedure f1(s: tstringlist );
  12. var sst: string;
  13. I: integer;
  14. begin
  15. sst:=s.strings[1];
  16. ....
  17. end;
  18.  
  19.  
  20.  


Ответ отправил: 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]:

Ну и объявляй массив как вариантный, а заполняй строками. Тогда будет прекрасно работать.
Сидаровский Георгий

Сидаровский Георгий (статус: Посетитель), 11 октября 2007, 14:08 [#6]:

Помогло спасибо

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 21 марта 2023, 20:37
Выполнено за 0.02 сек.
Рейтинг@Mail.ru