Главная страница
    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.45 MB
Время: 0.005 c
1-49982
Daiz13
2002-04-30 09:23
2002.05.16
Подскажите компонент для графика


3-49865
mik
2002-04-19 15:01
2002.05.16
Странные дела!


1-49951
VJar
2002-05-04 01:41
2002.05.16
Чтение текстового файла online


3-49880
Санёк
2002-04-18 23:11
2002.05.16
Мы по русски не понимаем...


4-50164
Velocity
2002-03-15 07:10
2002.05.16
PBS_SMOOTH - как использовать сию мессагу?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский