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

Вниз

класс и динамический массив   Найти похожие ветки 

 
evvcom ©   (2004-04-28 10:43) [40]


> Подскажите, пожалуйста, как передать, чтобы могла?..

см. [37]


 
Alexus12 ©   (2004-04-28 10:48) [41]

то есть достаточно поставить модификатор VAR
перед переменной/ссылкой на входной массив в объявлении?
А что значит, если ничего не ставить
или если ставить const?
догадываюсь, это будет передача не по сыылке, а по значени,?

блин, ну почему в help - proc declaration нет описания ключей???!!!!


 
evvcom ©   (2004-04-28 10:56) [42]


> блин, ну почему в help - proc declaration нет описания ключей???!!!!

Каких ключей?

> то есть достаточно поставить модификатор VAR
> перед переменной/ссылкой на входной массив в объявлении?

Да.

> А что значит, если ничего не ставить
> или если ставить const?

Если ничего не ставить, то в функцию передается значение переменной или указатель, если размер переменной больше 4 байт, но тогда делается копия в стеке, и работа идет уже с копией в стеке. Если употребить const, то копия в стеке не создается, но на все попытки присвоить константе что-либо компилятор начинает ругаться.


 
Alexus12 ©   (2004-04-28 11:29) [43]

В итоге получаем
1. вызывающая процедура:

Type
TIntegerArray = array of Integer;

procedure FindMatch;
var
shablon:TStr;
ArrIndexes:TIntegerArray;
begin

shablon:=form1.Edit1.text;
//вариант 1
ArrIndexes:=MyClassInstance.Find(shablon);
//вариант 2
ResultCount:=MyClassInstance.Find(shablon, ArrIndexes);

end;

2. Метод-обработчик

//вариант 1
Function MyClass.Find(shablon):TIntegerArray;
var
I: Integer;
begin
Result := nil;
for I := 0 to High(fMas) do
begin
if fMas[I] удовлетворил условию, тогда добавим его ИНДЕКС в Result:
Setlength(Result, Length(REsult)+1);
Result[High(Result)] := I;
end;

end;

----------------

//вариант 2
ResultCount:=MyClassInstance.Find(shablon, ArrIndexes):Integer;
var
I: Integer;
begin
Result := nil;
for I := 0 to High(fMas) do
begin
if fMas[I] удовлетворил условию, тогда добавим его ИНДЕКС в ArrIndexes:
Setlength(ArrIndexes, Length(ArrIndexes)+1);
ArrIndexes[High(ArrIndexes)] := I;
Result:=Result+1;
end;

--------
Какой вариант обычно избирают (считают корректным/быстрым/удобным) и почему?
Спасибо!


 
evvcom ©   (2004-04-28 11:35) [44]

В стандартном unit Types уже есть декларация:
type
 TIntegerDynArray = array of Integer;


 
Jack128 ©   (2004-04-28 11:37) [45]


> evvcom ©   (28.04.04 01:03) [27]
 Да,я не удачный пример привел

TSameRec = packed record
 b1, b2, b3: byte;
end;// SizeOf(TSameRec) = 3

TArr = array of TSameRec;
var
 arr: TArr;
// Сейчас (Integer(@arr[1]) - Integer(@arr[0]))= SizeOf(TSameRec) но в будущем это возможно будет не так (каждый элемент массива будет вырывниваться по двойному слову и Integer(@arr[1]) - Integer(@arr[0]) = 4)


 
Alexus12 ©   (2004-04-28 11:46) [46]

>Если ничего не ставить, то в функцию передается значение переменной или указатель

значит, для передачи по ссылке нужен явный var...
а const ускоряет работу не используя копию в стеке...
как странно...


 
evvcom ©   (2004-04-28 12:04) [47]

Что странно?
var и const почти одинаково передают параметр, но при var компилятор разрешает изменять переменную, а при const нет.


 
Alexus12 ©   (2004-04-28 14:01) [48]

Странно = что по умолчанию (без var/const) передается значение,
а не ссылка


 
evvcom ©   (2004-04-28 14:15) [49]


> Странно = что по умолчанию (без var/const) передается значение,
> а не ссылка

Если данные укладываются в 4 байта, то передается значение. Это справедливо и для const. А если > 4 байт, то передается ссылка, но для const и var ничего не копируется, а без них делается копия данных по ссылке в стеке.


 
Alexus12 ©   (2004-04-28 17:22) [50]

Спасибо за разъяснения про var/const!

А по (28.04.04 11:29) [43] ни у кого никаких комментариев?..



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

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.041 c
1-1083227723
senya
2004-04-29 12:35
2004.05.16
PDF не понимает русский язык, выдает "иероглифы"


3-1082543239
Gennadiy
2004-04-21 14:27
2004.05.16
Вопрос по поводу организации метода FIFO


1-1083325285
Sema
2004-04-30 15:41
2004.05.16
Как вставить гиперссылку в документ word ?


14-1082656341
Seldon
2004-04-22 21:52
2004.05.16
MulDiv


1-1083298689
Kliiip
2004-04-30 08:18
2004.05.16
Как сохранить параметры формы и компонентов в нем?