Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

передача в процедуру массива   Найти похожие ветки 

 
webpauk ©   (2012-04-05 12:53) [0]

type
 TStrArr: array[1..5] of String;

procedure DoSome(Value: TStrArr);
begin
 ...
end;

procedure MyProc;
begin
 DoSome(["Й", "Ц", "У", "К", "Е"]); - выдает ошибку
end;

Подскажите как правильно передать в функцию массив


 
Плохиш ©   (2012-04-05 12:55) [1]


> procedure DoSome(Value: TStrArr);

Описан параметр типа статического массива

>  DoSome(["Й", "Ц", "У", "К", "Е"]); - выдает ошибку
>

Предаётся открытый массив.
Правильно ошибку выдаёт.


 
webpauk ©   (2012-04-05 12:57) [2]


> Подскажите как правильно передать в функцию массив


 
begin...end ©   (2012-04-05 12:59) [3]

procedure DoSome(Arr: array of string);
var
 I: Integer;
begin
 for I := 0 to High(Arr) do
   ShowMessage(Arr[I])
end

procedure MyProc;
begin
 DoSome(["Й", "Ц", "У", "К", "Е"])
end

См. в справке: Open array parameters, Open array constructors.


 
webpauk ©   (2012-04-05 13:12) [4]


> begin...end ©   (05.04.12 12:59) [3]


абсолютно неподходящий вариант.
нужен именно мой вариант реализации procedure DoSome(Value: TStrArr);

как передать данные?


 
begin...end ©   (2012-04-05 13:18) [5]

> webpauk ©   (05.04.12 13:12) [4]

type
 TStrArr = array [1..5] of string;

procedure DoSome(Arr: array of string);
var
I: Integer;
begin
for I := Low(Arr) to High(Arr) do
  ShowMessage(Arr[I])
end;

var
 A: TStrArr;
begin
 A[1] := "Что,";
 A[2] := "и";
 A[3] := "так";
 A[4] := "не";
 A[5] := "подходит?";
 DoSome(A)
end


 
CRLF   (2012-04-05 13:18) [6]

type
TStrArr: array[1..5] of String;

procedure DoSome(Value: TStrArr);
begin
...
end;

procedure MyProc;
var
 StrArr: TStrArr;
begin
StrArr[1] := "Й";
StrArr[2] := "Ц";
StrArr[3] := "У";
StrArr[4] := "К";
StrArr[5] := "Е";
DoSome(StrArr); - не выдает ошибку
end;

P.S. Вообще-то общепринятый отступ -- два пробела.


 
webpauk ©   (2012-04-05 13:19) [7]


> begin...end ©   (05.04.12 13:18) [5]

криво... жаль. теряется изящность


 
begin...end ©   (2012-04-05 13:19) [8]

> procedure DoSome(Arr: array of string)
procedure DoSome(Arr: TStrArr)


 
webpauk ©   (2012-04-05 13:27) [9]

придется дописывать функцию:
function SetStrArr(const cArr: array of String): TStrArr;


 
Anatoly Podgoretsky ©   (2012-04-05 13:27) [10]

Тогда так
procedure DoSome(const Arr: array of const);


 
begin...end ©   (2012-04-05 13:30) [11]

> webpauk ©   (05.04.12 13:19) [7]

Я так и не понял, элементы массива заранее (до выполнения программы) известны или нет. Если известны, то чем не устраивают открытые массивы? Хотя можно и без них:

const
 Arr: TStrArr = ("Ох,", "тяжёлая", "это", "работа", "...");
begin
  DoSome(Arr)
end

А если элементы формируются уже на этапе выполнения программы, тогда о каком более изящном решении может идти речь?


 
webpauk ©   (2012-04-05 13:45) [12]


> begin...end ©   (05.04.12 13:30) [11]

элементы неизвестны... просто в качестве примера передал "йцуке"


 
toropoff   (2012-04-05 16:49) [13]

если готовый код нехочется переписывать то делайте типа:

  function my(val: array of String): TStrArr;
  var
    i: Integer;
  begin
    for i := 0 to high(val) do result[i]:= val[i];

  end;
 
  ...

  DoSome( my( ["Й", "Ц", "У", "К", "Е"] ) );


 
Медвежонок Пятачок ©   (2012-04-05 16:55) [14]

procedure DoSome(Value: string);
begin
for i := 1 to length(value) do
end;

procedure MyProc;
begin
DoSome("ЙЦУКЕН");
end;


 
CRLF   (2012-04-05 17:21) [15]


> Медвежонок Пятачок ©   (05.04.12 16:55) [14]

фигня. у него только в примере строки односимвольные. и научитесь уже строки передавать как const. и массивы тоже.



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

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.085 c
15-1338898180
Owner111
2012-06-05 16:09
2013.03.22
LPVOID & LPCVOID


15-1352990265
0xDEADBEEF
2012-11-15 18:37
2013.03.22
троеточие в элементах интерфейса


15-1354259144
Mikishanya
2012-11-30 11:05
2013.03.22
элемент selec с javascript


6-1256849792
Демо
2009-10-29 23:56
2013.03.22
WSARecv или ReadFile?


15-1353702602
Юрий
2012-11-24 00:30
2013.03.22
С днем рождения ! 24 ноября 2012 суббота





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