Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.107 c
2-1332763409
zvezda
2012-03-26 16:03
2013.03.22
Логин и пароль на БД В Делфи


15-1344894739
Германн
2012-08-14 01:52
2013.03.22
OpenOffice


2-1347122752
Тимофей
2012-09-08 20:45
2013.03.22
MS SQL2005 express


15-1352647406
Аббат Пиккола
2012-11-11 19:23
2013.03.22
Вот кто решает, что вкус ароматизатора идентичен натуральному


15-1339263264
Дмитрий С
2012-06-09 21:34
2013.03.22
Удаленный доступ к компу с маком.





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