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

Вниз

как передать в процедуру переменную типа Tstringlist   Найти похожие ветки 

 
lena19   (2004-06-16 18:54) [0]

всем привет
народ как передать в процедуру переменную типа Tstringlist
как в этом случае объявлять процедуру ????


 
VMcL ©   (2004-06-16 18:57) [1]

>>lena19  (16.06.04 18:54)

ну, например, так:

procedure lena19proc(SL: TStringList);
begin
 // ..
end;


или так:
procedure lena19proc(SL: TStrings);
begin
 // ..
end;


 
Тимохов ©   (2004-06-16 18:59) [2]

можно и так

procedure lena19proc(SL: TObject);
begin
  // ..
end;

только приведение типов к TStringList внутри метода нужно делать.


 
Gero ©   (2004-06-16 19:03) [3]


> Тимохов ©   (16.06.04 18:59)

Ну раз уж на то пошло, то и так можно:
procedure lena19proc(SL: Pointer);
begin
 // ..
end;


 
YurikGL ©   (2004-06-16 19:03) [4]


> Тимохов ©   (16.06.04 18:59) [2]

Только, если я не ошибаюсь, действия будут производится с тем же экземпляром объекта, а копия создаваться не будет, в отличии от объявления procedure lena19proc(SL:integer).


 
VMcL ©   (2004-06-16 19:06) [5]

>>Тимохов ©  (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) [6]

Oops. Опередили :)


 
Тимохов ©   (2004-06-16 19:17) [7]


> YurikGL ©   (16.06.04 19:03) [4]

вы о чем?
какая копия.
копия никогда создаваться не будет - всегда будет передаваться ссылка.
или я что-то пропустил?


 
Тимохов ©   (2004-06-16 19:34) [8]


> VMcL ©   (16.06.04 19:06) [5]

[2] я привел не ради флуда.

Иногда случается так, что никда не денешься без зацикленности юнитов. Понимаю, что это плохо, ошибка проектирования, но иногда деваться некуда - нужно срочно сделать так, чтобы заработало.

Тогда в одном из юнитов в интерфейсной части я объявляю процедуры как TObject, предполагая, что в них будет передаваться объекты класса из другого юнита. Юнит подключается под implementaion. И в процедуре просто проверяется - то ли класс или нет.


 
VMcL ©   (2004-06-16 19:37) [9]

>>Тимохов ©  (16.06.04 19:34) [8]

1. В данном контексте это не случится. TStrings, TStringList находятся в classes.pas.

2. Зацикленность юнитов можно разрешить с помощью, например, базового Custom-класса.



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
4-1084096604
TCrash
2004-05-09 13:56
2004.07.04
Загрузка процессора конкретным приложением


14-1087350281
Думкин
2004-06-16 05:44
2004.07.04
С днем рождения! 16 июня


1-1087468337
Aleksandr.
2004-06-17 14:32
2004.07.04
Как проверить, экземпляром какого класса является элемент TList?


3-1086845505
Leech
2004-06-10 09:31
2004.07.04
Поиск в БД


3-1086582750
Прямой
2004-06-07 08:32
2004.07.04
Отваливается загрузка данных