Форум: "Начинающим";
Текущий архив: 2007.09.09;
Скачать: [xml.tar.bz2];
ВнизОбращение через указатель Найти похожие ветки
← →
***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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.043 c