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

Вниз

Просто вопрос о передаче параметров в процедуру :)   Найти похожие ветки 

 
Denis ©   (2003-11-05 11:15) [0]

Здраствуйте всем!

Почему запись

procedure TfmTime.cbCexChange(Sender: TObject);
var ind:integer;
begin
//--- перебор компонентов в цикле---

SheetOpen((Components[ind] AS TADOQuery),0); //Вызов своей процедуры

некорректна, тогда как


procedure TfmTime.cbCexChange(Sender: TObject);
var ind:integer; obj:TADOQuery;
begin
//--- перебор компонентов в цикле---
obj:=(Components[ind] AS TADOQuery),
SheetOpen(obj,0); //Вызов своей процедуры


работает?


 
Skier ©   (2003-11-05 11:17) [1]

а параметр SheetOpen не var случайно ?


 
Владислав ©   (2003-11-05 11:18) [2]

Объявление процедуры SheetOpen приведи.


 
Anatoly Podgoretsky ©   (2003-11-05 11:19) [3]

Ощибка в 17 строке


 
Владислав ©   (2003-11-05 11:21) [4]

В приведенном коде их всего 5 :)


 
Anatoly Podgoretsky ©   (2003-11-05 11:23) [5]

Приведен не весь код, еслжие приведен весь, то будет сообщение об ошибке


 
Denis ©   (2003-11-05 11:28) [6]


> Anatoly Podgoretsky © (05.11.03 11:19) [3]
> Ощибка в 17 строке


:))


> Владислав © (05.11.03 11:18) [2]
> Объявление процедуры SheetOpen приведи.


procedure TfmTime.SheetOpen(var table:TADOQuery; flag:byte);

Да, действительно var.
А как правильно?
Есть у меня процедура
procedure Napolnenie(var NameDBG:TDbGridEh; NumCol,keyfield,picfield:integer;tab:TDataSet); - работает молча.

наверное надо попробовать
SheetOpen((Components[ind] AS TADOQuery).Name,0); ?


 
Denis ©   (2003-11-05 11:30) [7]

Приколисты... :-)


 
Skier ©   (2003-11-05 11:31) [8]


> наверное надо попробовать
> SheetOpen((Components[ind] AS TADOQuery).Name,0); ?

наверное надо var убрать для var table:TADOQuery


 
Denis ©   (2003-11-05 11:39) [9]

Убрал. Работает. Спасибо.
Но все же, почему "var NameDBG:TDbGridEh..." - нормально, а "var table:TADOQuery" - нет?
Ведь и там и там я передаю процедуре Name компонента?


 
Skier ©   (2003-11-05 11:42) [10]

>Denis © (05.11.03 11:39) [9]
Help почитай...


 
Юрий Федоров ©   (2003-11-05 11:46) [11]

Свойство (Property) нельзя передавать как VAr параметр.
Да и var при передаче объектов нужет только в том случае, если ты внутри процедуры изменяешь сам экземпляр, а не его свойства - например вызываешь ему Free а потом создаешь заново


 
Anatoly Podgoretsky ©   (2003-11-05 11:47) [12]

Denis © (05.11.03 11:39) [9]
В этом случае требуется переменная


 
Anatoly Podgoretsky ©   (2003-11-05 11:48) [13]

Denis © (05.11.03 11:28) [6]
Кто то смеялся, но 17 строку все равно нашел :-)


 
Denis ©   (2003-11-05 11:56) [14]

То есть в данном случае мы передаем не конкретное значение, а ссылку на объект, свойства которого нам нужно изменить.
Если нужно выполнить действия над экземпляром объекта, то тогда и передаем его как var...так?


 
Skier ©   (2003-11-05 11:59) [15]


> Если нужно выполнить действия над экземпляром объекта, то
> тогда и передаем его как var...так?

если нужно выполнить действия над указателем на экземпляр объекта, то - да, если нет, то var не нужен.


 
Anatoly Podgoretsky ©   (2003-11-05 12:02) [16]

Denis © (05.11.03 11:56) [14]
В обоих случаях без var
А вот если ты переменной объекта захочешь присвоить новое значение, то тогда и потребуется var


 
Denis ©   (2003-11-05 12:07) [17]

"Процесс познания предметной области в основном заключается в овладении терминологией..." - это пришло на ум по поводу
> Skier © (05.11.03 11:59) [15]
А еще нужно учить Object Pascal :( (В смысле - это про меня.)

Спасибо за объяснение! Будем грызть гранит дальше...



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

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

Наверх




Память: 0.5 MB
Время: 0.026 c
1-56714
mc_duck
2003-11-07 09:36
2003.11.17
Адрес объекта.


7-56933
Karburator
2003-09-03 16:20
2003.11.17
Удаление каталога с содержимым


6-56790
noname666
2003-09-12 14:32
2003.11.17
sendto


1-56626
McSimm2
2003-11-05 16:32
2003.11.17
Массив объектов


14-56890
VEG
2003-10-23 17:31
2003.11.17
БЕДСТВУЮ!!!