![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как передать в процедуру переменную типа Tstringlist
lena19 © (2004-06-16 18:54:00)всем привет
народ как передать в процедуру переменную типа Tstringlist
как в этом случае объявлять процедуру ????
VMcL (2004-06-16 19:37:00) [1]>>Тимохов © (16.06.04 19:34) [8]
1. В данном контексте это не случится. TStrings, TStringList находятся в classes.pas.
2. Зацикленность юнитов можно разрешить с помощью, например, базового Custom-класса.
Тимохов (2004-06-16 19:34:00) [2]
> VMcL © (16.06.04 19:06) [5]
[2] я привел не ради флуда.
Иногда случается так, что никда не денешься без зацикленности юнитов. Понимаю, что это плохо, ошибка проектирования, но иногда деваться некуда - нужно срочно сделать так, чтобы заработало.
Тогда в одном из юнитов в интерфейсной части я объявляю процедуры как TObject, предполагая, что в них будет передаваться объекты класса из другого юнита. Юнит подключается под implementaion. И в процедуре просто проверяется - то ли класс или нет.
Тимохов (2004-06-16 19:17:00) [3]
> YurikGL © (16.06.04 19:03) [4]
вы о чем?
какая копия.
копия никогда создаваться не будет - всегда будет передаваться ссылка.
или я что-то пропустил?
VMcL (2004-06-16 19:06:00) [4]>>Тимохов © (16.06.04 18:59) [2]
Ну тогда можно вообще даже так :)
procedure lena19proc(SL: Pointer);
begin
// ..
end;
или на Win32 даже вообще так:
procedure lena19proc(SL: LongInt);
begin
// ..
end;
VMcL (2004-06-16 19:06:00) [5]Oops. Опередили :)
Gero (2004-06-16 19:03:00) [6]
> Тимохов © (16.06.04 18:59)
Ну раз уж на то пошло, то и так можно:
procedure lena19proc(SL: Pointer);
begin
// ..
end;
YurikGL (2004-06-16 19:03:00) [7]
> Тимохов © (16.06.04 18:59) [2]
Только, если я не ошибаюсь, действия будут производится с тем же экземпляром объекта, а копия создаваться не будет, в отличии от объявления procedure lena19proc(SL:integer).
Тимохов (2004-06-16 18:59:00) [8]можно и так
procedure lena19proc(SL: TObject);
begin
// ..
end;
только приведение типов к TStringList внутри метода нужно делать.
VMcL (2004-06-16 18:57:00) [9]>>lena19 (16.06.04 18:54)
ну, например, так:
procedure lena19proc(SL: TStringList);
begin
// ..
end;
или так:
procedure lena19proc(SL: TStrings);
begin
// ..
end;