Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.01 c
3-56480
GIL
2003-10-27 17:20
2003.11.17
Файлы для Paradox


1-56559
dead1
2003-11-06 12:59
2003.11.17
Алгоритм


1-56647
Anatol
2003-11-05 13:01
2003.11.17
Сервисы


1-56604
RoLeX
2003-11-06 00:02
2003.11.17
TOpenDialog, как сделать?


7-56943
Любитель
2003-09-09 09:01
2003.11.17
Господа как программно изменить время двойного клика





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский