Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.19;
Скачать: [xml.tar.bz2];

Вниз

параметры процедур/функций   Найти похожие ветки 

 
^Sanya   (2002-09-06 02:01) [0]

часто требуется писать процедурку типа:
procedure LabelColorChange(ALabel : TLabel);
begin
with (ALabel as TLabel) do
begin
...
end;
end;


Ведь параметром-переменной объект быть не может....
А как сделать так, чтобы не создавать лишний образ в памяти?
Как указатели использовать?


 
Aleks1   (2002-09-06 02:49) [1]

TLabel - уже указатель на объект.


 
ЮЮ   (2002-09-06 04:40) [2]

with (ALabel as TLabel) - лишнее, ведь ALabel:TLabel, а не TObject


 
KSergey   (2002-09-06 06:38) [3]

Впечатление, что есть у вас какое-то заблуждение на счет чего-то, но не понятно на счет чего. Если еще не все прояснилось - опишите свой вопрос более пространно, включив в него понимание написанного вами кода - и возможно удасться более делатьно растолковать. В какой момент и что там создается по вашему мнению? Не понятно.


 
Song   (2002-09-06 08:11) [4]

Вообе обычно это трактуется так:

Procedure TForm1.Label1Click(Sender:TObject);
Begin
With TLabel(Sender) Do ... ;
End;


 
Smithson   (2002-09-06 08:33) [5]

Тот факт, что Label: TLABEL - это просто борландовский прикол. На самом деле все class у них трактуются как указатели на объект (класс). Поэтому лишней копии в памитя не создается. И можно смело менять свойства и поля объекта в процедуре и быть уверенным, что работаешь с правильным экземпляром и вне процедуры изменения так же будут в силе.
Кстати, насчет прикола - передать по var Read-Only property нельзя, но без var - можно и изменять его поля тоже можно.


 
^Sanya   (2002-09-06 11:24) [6]


> KSergey © (06.09.02 06:38)

Дело в том, что я видимо кой чё перепутал...

Помнится мне такая вещь, как передача параматров в процедуры по значению....
Так вот, я и подумал, что разницы между переменной и объектом нет...
Теперь я вроде как понял, что разница есть...


 
KSergey   (2002-09-09 12:35) [7]

Smithson © (06.09.02 08:33)
Кстати, насчет прикола - передать по var Read-Only property нельзя, но без var - можно и изменять его поля тоже можно.


А что в этом "прикольного"? Здесь нет никакого противоречия. Просто надо понять на что именно распространяется Read-Only: оно распространяется на значение передаваемого параметра (а в данном случае это ссылка, указатель на объект), которое поменять и нельзя. Но это не касается возможности изменения памяти, на которую этот указатель указывает (т.е. поля объекта, переданного ссылкой в ф-цию). Таким образом саму ссылку на объект поменять нельзя (нельзя сделать так, чтобы этот указатель стал указывать на другой объект, чего "боится" компилятор при попытке передать через var), но менять содержимое памяти - сколько угодно.



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

Форум: "Основная";
Текущий архив: 2002.09.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
3-61001
S/A
2002-08-29 10:01
2002.09.19
Вставка значений Lookup полей в ADODataSet


3-61029
:: Hamster ::
2002-08-30 08:16
2002.09.19
динамическая база


8-61218
Fredericco
2002-05-20 12:03
2002.09.19
Вопрос по распознаванию речи


1-61058
evgeg
2002-09-09 12:09
2002.09.19
Как сделать компонент для обр-ки горячих клавиш?


1-61200
VDen
2002-09-08 16:15
2002.09.19
Печать QReport-отчета





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский