Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизРекурсия и переменные Найти похожие ветки
← →
webpauk (2005-02-25 14:22) [0]подскажите pls, как в рекурсивной функции передать параметр (Dynamic array)?
function Something(var fR: array of Trect): Boolean;
begin
Result:=False;
if SomeEvent then
begin
Result:=True;
Exit;
end;
SetLength(fR, Length(fR)+1);
fR[Length(fR)-1]:=fSomeRect;
Result:=Result or Something(fR);
end;
Если всё зергут, то как обратиться к такой функции? (!)
Потому как если:
Something([]) - пройдет, тоfunction Something(fR: array of Trect): Boolean;
begin
SetLength(fR, Length(fR)+1); - ошибка компиляции
end;
← →
КаПиБаРа © (2005-02-25 14:24) [1]type
TRectArray: array of Trect
...
function Something(var fR: TRectArray): Boolean;
← →
Алхимик © (2005-02-25 14:25) [2]
type
MyArray = array of TRect;
function Something(fR: MyArray): Boolean;
← →
Digitman © (2005-02-25 14:25) [3]
> в рекурсивной
рекурсия-то здесь причем ?
← →
КаПиБаРа © (2005-02-25 14:28) [4]webpauk (25.02.05 14:22)
SetLength(fR, Length(fR)+1);
Увеличивать массив на 1 элемент не оптимально. Очень тормозит программу. Можно ввести доп. переменную отвечающую за кол-во заполненных элементов и при необходимости увеличивать массив на большее количество элементов.
← →
begin...end © (2005-02-25 14:29) [5]> webpauk (25.02.05 14:22)
> function Something(var fR: array of Trect): Boolean;
Здесь fR - это не динамический, а открытый массив. См. в справке: open array parameters.
Вам нужно объявить свой тип динамического массива. Например:type
TRectArray = array of TRect;
function Something(var RectArray: TRectArray): Boolean;
begin
...
SetLength(RectArray, ...)
...
end;
var
Arr: TRectArray;
begin
... := Something(Arr)
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c