Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.02 c
14-56849
Peter
2003-10-27 15:10
2003.11.17
Html


9-56426
T{}r(l-l
2003-05-08 00:44
2003.11.17
Как рисовать модельки?


14-56887
GOOD
2003-10-26 01:05
2003.11.17
Головоломка про монеты.


14-56895
Slavian
2003-10-25 14:53
2003.11.17
Олимпиада


14-56915
Rouse_
2003-10-25 01:47
2003.11.17
Хотелось бы....




   Наверх