Форум: "Начинающим";
Текущий архив: 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