Форум: "Основная";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];
ВнизПросто вопрос о передаче параметров в процедуру :) Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.013 c