![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение через указатель [D7, XP]
***mikle*** © (2007-08-12 16:33:00)Подскажите, пожалуйста, каким образом через указатель на объект (нетипизированный указатель) вызвать метод этого объекта? В хелпе написано, что это делает черезе метод CastTo, но это метод чего? указателя?
На обероне жёсткое приведение типов выглядит так:
VariableOfSourceType(DestType)
а как это же сделать на дельфях?
oxffff (2007-08-13 20:09:00) [1]
> Ega23 © (13.08.07 16:57) [8]
>
> > Button1 это экземпляр класса, т.е объект.
> > Указатель на объект - это указатель на переменную объект.
>
> >
>
>
> var
> Button1 : TButton;
> begin
> Label1.Caption := IntToStr(SizeOf(Button1));
>
>
> Результат почему-то не 200, не 2000, не 2, а именно 4.
Хорошо, а почему тогда вы не выделяете память под ваш объект(указатель) явно?
Почему вы не делаете так Getmem(Obj,TButton.instanceSize)?
Ответите мне, что это делает _ClassCreate, NewInstance/FreeInstance?
Уверен, что мы оба понимает о чем идет речь.
Просто не нужно примешивать сюда С++ семантику объекта.
Если указатель на объект, то это все же будет [2].
***mikle*** (2007-08-13 18:48:00) [2]Спасибо!
Ega23 (2007-08-13 16:57:00) [3]
> Button1 это экземпляр класса, т.е объект.
> Указатель на объект - это указатель на переменную объект.
>
var
Button1 : TButton;
begin
Label1.Caption := IntToStr(SizeOf(Button1));
Результат почему-то не 200, не 2000, не 2, а именно 4.
oxffff (2007-08-13 14:49:00) [4]
> Ega23 © (13.08.07 14:36) [5]
>
> > Button1 - это объект. А вопрос был задан про указатель
> на
> > объект.
>
>
> Button1 - это и есть указатель на объект класса TButton.
>
Button1 это экземпляр класса, т.е объект.
Указатель на объект - это указатель на переменную объект.
palva (2007-08-13 14:43:00) [5]Button1 - это и есть указатель на объект класса TButton.
Ну у меня же написано "Индира Ганди"... В смысле
Button1: TButton;
Но спорить я не буду.
Ega23 (2007-08-13 14:36:00) [6]
> Button1 - это объект. А вопрос был задан про указатель на
> объект.
Button1 - это и есть указатель на объект класса TButton.
palva (2007-08-13 13:45:00) [7]> Button1 уже сам по себе указатель.
Язык Delphi не позволяет обращаться с Button1 как с указателем. Другое дело, что в настоящее время он реализован как указатель, но формально говоря
Button1 - это объект. А вопрос был задан про указатель на объект.
Ega23 (2007-08-13 13:38:00) [8]
> palva © (13.08.07 13:06) [2]
Button1 уже сам по себе указатель.
palva (2007-08-13 13:06:00) [9]
procedure TForm1.Button2Click(Sender: TObject);
var
p: Pointer;
s: String;
type
PButton = ^TButton;
begin
p := @Button1;
s := (PButton(p))^.Caption;
ShowMessage(s);
end;
jack128_ (2007-08-12 17:45:00) [10]
> В хелпе написано, что это делает черезе метод CastTo,
это в каком таком хелпе??
> VariableOfSourceType(DestType)
в дельфи
TDestType(VariableOfSourceType)