Главная страница
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.015 c
15-1186868686
lookin
2007-08-12 01:44
2007.09.09
Непонятность про мужиков...


2-1187078452
Merry
2007-08-14 12:00
2007.09.09
Формат даты отличный от системного


1-1182926455
Stanislav
2007-06-27 10:40
2007.09.09
Упаковка данных с помощью ZLIB


15-1186675833
kernel
2007-08-09 20:10
2007.09.09
Выбираем *nix ?!


4-1174345185
Vlad-Q
2007-03-20 01:59
2007.09.09
Открытие окна броузера с заданным url