Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.09;
Скачать: CL | DM;

Вниз

Обращение через указатель   Найти похожие ветки 

 
***mikle*** ©   (2007-08-12 16:33) [0]

Подскажите, пожалуйста, каким образом через указатель на объект (нетипизированный указатель) вызвать метод этого объекта? В хелпе написано, что это делает черезе метод CastTo, но это метод чего? указателя?
На обероне жёсткое приведение типов выглядит так:
VariableOfSourceType(DestType)
а как это же сделать на дельфях?


 
jack128_   (2007-08-12 17:45) [1]


> В хелпе написано, что это делает черезе метод CastTo,

это в каком таком хелпе??


> VariableOfSourceType(DestType)

в дельфи
TDestType(VariableOfSourceType)


 
palva ©   (2007-08-13 13:06) [2]

procedure TForm1.Button2Click(Sender: TObject);
var
 p: Pointer;
 s: String;
type
 PButton = ^TButton;
begin
 p := @Button1;
 s := (PButton(p))^.Caption;
 ShowMessage(s);
end;


 
Ega23 ©   (2007-08-13 13:38) [3]


> palva ©   (13.08.07 13:06) [2]


Button1 уже сам по себе указатель.


 
palva ©   (2007-08-13 13:45) [4]

> Button1 уже сам по себе указатель.
Язык Delphi не позволяет обращаться с Button1 как с указателем. Другое дело, что в настоящее время он реализован как указатель, но формально говоря
Button1 - это объект. А вопрос был задан про указатель на объект.


 
Ega23 ©   (2007-08-13 14:36) [5]


> Button1 - это объект. А вопрос был задан про указатель на
> объект.


Button1 - это и есть указатель на объект класса TButton.


 
palva ©   (2007-08-13 14:43) [6]

Button1 - это и есть указатель на объект класса TButton.
Ну у меня же написано "Индира Ганди"... В смысле
Button1: TButton;
Но спорить я не буду.


 
oxffff ©   (2007-08-13 14:49) [7]


> Ega23 ©   (13.08.07 14:36) [5]
>
> > Button1 - это объект. А вопрос был задан про указатель
> на
> > объект.
>
>
> Button1 - это и есть указатель на объект класса TButton.
>


Button1 это экземпляр класса, т.е объект.
Указатель на объект - это  указатель на переменную объект.


 
Ega23 ©   (2007-08-13 16:57) [8]


> Button1 это экземпляр класса, т.е объект.
> Указатель на объект - это  указатель на переменную объект.
>


var
Button1 : TButton;
begin
Label1.Caption := IntToStr(SizeOf(Button1));


Результат почему-то не 200, не 2000, не 2, а именно 4.


 
***mikle*** ©   (2007-08-13 18:48) [9]

Спасибо!


 
oxffff ©   (2007-08-13 20:09) [10]


> 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].



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

Текущий архив: 2007.09.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
3-1179142779
DelphiLexx
2007-05-14 15:39
2007.09.09
DBGridEh проблемы перехода из режима редактирования


8-1165161356
IMHO
2006-12-03 18:55
2007.09.09
Формат SWF (Flash)


2-1187068473
Новичек
2007-08-14 09:14
2007.09.09
Работа с USB портом.


2-1187547491
nord489
2007-08-19 22:18
2007.09.09
Работа с файлами.


2-1187218781
{RASkov}
2007-08-16 02:59
2007.09.09
Как принудительно обновить размер колонок в ListView?