![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А как передать данные из ОДНОЙ процедуры в ДРУГУЮ?
CoolLamer © (2007-01-06 20:06:00)Дорова МАСТЕРА!
Подскажите ЛАМЕРУ как данные из:
Procedure AAA ()
Begin
...
End;
передать в процедуру
Procedure ВВВ ()
Begin
...
Procedure AAA ()
...
End;
учитывая что вторая запускает первую??
Спасиб!
MsGuns (2007-01-06 21:24:00) [21]Читать про Sender, Owner, операторы as и is, преобразование T<ClassName> и вообще введение в RTTI
CoolLamer (2007-01-06 21:14:00) [22]А ЕСЛИ Я СОЗДАЛ ОБЪЕКТ КОДОМ, ПОТОМ ЕГО ПРОЦЕДУРУ, ну например КНОПКУ, потом ПРИСВОИЛ ЕЙ ПРОЦЕДУРУ onClick, как мне при нажатии изминить ее Caption?
CoolLamer (2007-01-06 21:11:00) [23]
> Объекты в Делфи всегда передаются по ссылке.
Точно, простите НЕВЕЖУ!!!!
Может НИСПОШЛЕТЕ более ламерским ЯЗЫКОМ?? : (
Kolan (2007-01-06 21:11:00) [24]«ОПРЕДЕЛИТЬ ЕЕ РОДИТЕЛЯ»
Зачем же ток орать?
Джо (2007-01-06 21:09:00) [25]> [26] CoolLamer (06.01.07 21:08)
>
> > 2. Передать его параметром.
>
> В смысле САМ объект?
Объекты в Делфи всегда передаются по ссылке.
CoolLamer (2007-01-06 21:08:00) [26]
> 2. Передать его параметром.
В смысле САМ объект?
Джо (2007-01-06 21:06:00) [27]> [24] CoolLamer (06.01.07 21:04)
> КАК ВНУТРИ ИСПОЛНЯЕМОЙ ПРОЦЕДУРЫ ОПРЕДЕЛИТЬ ЕЕ "РОДИТЕЛЯ",
> кто ее вызвал и вообще, например чтобы изминить свойство
> этого ОБЪЕКТА, например CAPTION
Ответы смотри:
[23] Virgo_Style © (06.01.07 21:04)
CoolLamer (2007-01-06 21:04:00) [28]
> Хотя что конкретно нужно автору - до сих пор остается загадкой
Я разобрался по ВОПРОСУ уже СПАСИБО!
Другой возник последний....
КАК ВНУТРИ ИСПОЛНЯЕМОЙ ПРОЦЕДУРЫ ОПРЕДЕЛИТЬ ЕЕ "РОДИТЕЛЯ", кто ее вызвал и вообще, например чтобы изминить свойство этого ОБЪЕКТА, например CAPTION
Virgo_Style (2007-01-06 21:04:00) [29]CoolLamer (06.01.07 20:57) [21]
1. Никак.
2. Передать его параметром.
3. Сделать процедуру методом класса.
Virgo_Style (2007-01-06 21:01:00) [30]MsGuns © (06.01.07 20:49) [20]
???
> Исключения составляют методы класса, которые могут
> работать непосредственно с некоторыми свойствами,
> методами или событиями этого класса.
Примерно это я и имел в виду. Или с некоторым зубовным скрежетом можно и непосредственно к SomeForm.SomeGrid обратиться из процедуры, если не предполагается несколько экземпляров этой формы, и если вообще говорить о глобальных переменных. Ясное дело, это не есть хорошо, но такое впечатление, что эту кашу даже этаким маслом уже не испортить %-)
Хотя что конкретно нужно автору - до сих пор остается загадкой.
CoolLamer (2007-01-06 20:57:00) [31]ТАК КАК В НУТРИ ПРОЦЕДУРЫ, ОПРЕДЕЛИТЬ ОБЪЕКТ КОТОРЫЙ ЕЕ ВЫЗЫВАЕТ???
MsGuns (2007-01-06 20:49:00) [32]> 2. Grid в данном случае вполне похож на глобальную переменную
???
CoolLamer (2007-01-06 20:39:00) [33]
> MsGuns © (06.01.07 20:37) [16]
8 ]
MsGuns (2007-01-06 20:38:00) [34]>CoolLamer (06.01.07 20:30) [14]
>ЭТО Grid, просто я вызываю Grid из процедуры ААА, и хочу знать какую >строку ВЫБРАЛИ в процедуре ВВВ.
Код на стол !
CoolLamer (2007-01-06 20:38:00) [35]
> 1. Параметры
> 2. Grid в данном случае вполне похож на глобальную переменную
> %-)
А можно примерчик МАЛЮСЕНЬКИЙ?
MsGuns (2007-01-06 20:37:00) [36]Про обмен данными с процедурами и функциями, а также область видимости читать в делфишной справке или у Тексейро.
"Правильные" процедуры (функции) это такие программные блоки кода, которые по идее не должны интересоваться кто их вызвал, откуда и зачем. Это как почтальон, в обязанности которого входит вовремя доставить адресату послание, а вовсе не проверка грамматическимх ошибок.
Исключения составляют методы класса, которые могут работать непосредственно с некоторыми свойствами, методами или событиями этого класса.
В общем случае Паскаль не ограничивает программиста в выборе стратегии разбивки (модулирования) кода, поэтому иногда целесообразно совмещение этих двух стилей. В этом случае удобно передавать в процедуру указатель на соответствующий объект (дескриптор), поля которого ею и заполняются. Вызывающая функция на "выходе" анализирует содержимое дескриптора объекта и поступает дале по алгоритму.
Virgo_Style (2007-01-06 20:36:00) [37]1. Параметры
2. Grid в данном случае вполне похож на глобальную переменную %-)
CoolLamer (2007-01-06 20:30:00) [38]ЭТО Grid, просто я вызываю Grid из процедуры ААА, и хочу знать какую строку ВЫБРАЛИ в процедуре ВВВ.
Джо (2007-01-06 20:26:00) [39]> [8] CoolLamer (06.01.07 20:21)
> Надо! : )) Или этого нельзя сделать?
А где вообще в твоем примере хотья какой-то «объект»?
Virgo_Style (2007-01-06 20:26:00) [40]Еще иногда можно таким образом
procedure TForm1.Button1Click(Sender: TObject);
var LogStr:String;
procedure AddToLog;
begin
Memo1.Lines.Add(LogStr);
end;
begin
LogStr:='Поехали';
AddToLog;
...
end;
P.S. Я не удивлюсь, кстати, если автору на самом деле результат работы вызванной функции вернуть надо.