| 
| 
 | Вопрос # 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;begins:=tstringlist.create;s.add('str1');s.add('str2');.....P1(s);s.free;end; procedure f1(s: tstringlist );var sst: string;        I: integer;beginsst:=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]:Ну и объявляй массив как вариантный, а заполняй строками. Тогда будет прекрасно работать. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |