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

Вниз

Про указатели и вообще я чето не пойму!   Найти похожие ветки 

 
say   (2002-05-02 01:03) [0]

Мастера!!! Я чето не понял следующего
(помогите пожалуйста)

var F:^TForm;
s:string;

New(F);
F^:=TForm.Create(Application);
F.Caption:="rrrrrr"; // проходит
s:=F.Caption; // проходит
F^.Free; // проходит

а вто если заменить:
F^.Free; на F.Free; // глючит со страшной силой!!!!

ПОЧЕМУ!? ПОЧЕМУ!? ПОЧЕМУ!?


 
kull ©   (2002-05-02 01:23) [1]

А зачем F:^TForm ?
Достаточно - F:TForm;


 
Andrus   (2002-05-02 11:44) [2]


> var F:^TForm;
> s:string;
>
> New(F);
> F^:=TForm.Create(Application);
> F.Caption:="rrrrrr"; // проходит
> s:=F.Caption; // проходит
> F^.Free; // проходит

var F:TForm;//это уже указатель на TForm
s:string;

//New(F); ???????????????
F:=TForm.Create(Application);
F.Caption:="rrrrrr"; // проходит
s:=F.Caption; // проходит
F.Free; // проходит




 
Doom ©   (2002-05-02 12:10) [3]


> F.Caption:="rrrrrr"; // проходит

чисто случайно проходит.

> s:=F.Caption; // проходит

тут тебе тоже повезло

> F^.Free; // проходит
>
> а вто если заменить:

а не надо заменять

А что непонятно?


 
Malder ©   (2002-05-02 13:35) [4]

say, непонятно почему проходит F.Caption:="rrrrrr"
И совершенно понятно почему начинает на F.Free глючить. F - это же указатель, а не объект, и у него нету деструктора Destroy (который вызывается методом Free). Я вот другого не понимаю. Почему вообзе компилятор Delphi допускает конструкцию типа на F.Free, s:=F.Caption, F.Caption:="rrrrrr" ?!

P.S. В конце не забывай освобождать место, выделенное New(F) процедурой Dispose(F)...


 
sssss ©   (2002-05-03 02:44) [5]

СПАСИБО за ответы!!!!!!!!!!!!
Объясняю!!! Я вот сам не могу понять. ПОЧЕМУ?

-> kull это просто пример можно хоть какой тип. (но только
объект). А вот если надо неизвестное кол-во кнопок или еще
чего? как быть - конечно самое простое - список TList где
элементы pointer"ы и т.д.

-> Andrus вот и я не пойму!!! ПОЧЕМУ (поэтому и большими буквами)
ведь если сделать Integer(F) и Integer(F^) это совсем разные
значения!

-> Doom ПОЧЕМУ повезло? F (4 байта) - указывает на другие 4 байта
которые уже указывают непосредственно тип и от которых идут
некие смещения по полям. Почему тогда проходит F.Caption?

-> Malder Спасибо за напоминание про Dispose() но я как раз его
и не забываю делать, но мемогу понять почему и F.Caption и
F^.Caption одно и тоже.

Кстати я сам всегда делаю F^.Caption и F^.Free (только хочется понять что за фигня!!!). Если Дельфа просто облегчает таким образом работу то возникает вопрос а почему именно Free не проходит


 
Aleks1   (2002-05-03 04:08) [6]

Переменные типа F : TObject Всегда являются уже указателями на соответсвующий объект. "Кнопки или еще чего" тут будут теми же указателями.



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
1-49933
DiGiTaL
2002-04-27 18:32
2002.05.16
Компилятор выдает сообщение


1-50007
Novak
2002-04-30 12:03
2002.05.16
StringGrid. Очень интересно как...Спасибо.


3-49819
ao1973
2002-04-18 11:44
2002.05.16
КАК програмно СОЗДАТЬ файл БД ACESS-a ?


6-50065
boomer
2002-03-03 10:01
2002.05.16
Sniffer(packet32.dll) получаю я пакеты ф-ей PacketReceivePacket , а как понять какой пакет пришел


14-50129
Agent Smith
2002-04-08 17:23
2002.05.16
России принимают DMCA!