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

Вниз

Propose small change to _Tobj to the Dacha man ;)   Найти похожие ветки 

 
Thaddy   (2005-08-05 01:47) [0]

This is an architectural matter.

What are your thoughts about this possible change to _Tobj (The basic object for Tobj and therefore Tcontrol):
I propose to make the *first* field an untyped pointer, so that you can assign other objects or data to it, just like CustomObj and CustomData.
The advantage is, that you can typecast a full Tobj descendant to the type that holds the pointer:

type
 PPMyObject = ^PMyObject;
 PMyObject = ^TMyObject;
 TMyObject = object(Tobj)
 ....
 end;

Now if the *first* field in _Tobj were a pointer, we could assign a structure to it, say, PWaveFormatEx and we could typecast the whole object as PPWaveFormatEx. Actually simulating interfaces and /or "friend" in C++
You can already do this with simple objects, but you loose the power of the destructor/free. (Add2Autofree, etc)
Right Now the first field is FRefCount. Ithink my proposal would not break the code, only Frefcount and fTag need to be switched?
Or am I missing something?


 
Thaddy   (2005-08-05 02:01) [1]

And the typecast would be:


var

 WaveFormat:TWaveFormatEx; // or any other record or object

 MyObject:PMyobject;
begin
 MyObject:=NewMyObject;
 MyObject.Tag:=Cardinal(@WaveFormat);// Assumes the above!
 PPWaveFormatEx(MyObject).nSamplesPerSec:=44100;
end;



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

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

Наверх




Память: 0.44 MB
Время: 0.039 c
15-1141246223
LordOfRock
2006-03-01 23:50
2006.03.26
Unicode-интерфейс проги


2-1141733678
oleg__
2006-03-07 15:14
2006.03.26
TImageList


2-1141716984
Ivolg
2006-03-07 10:36
2006.03.26
Чтение из потока...


15-1141102451
Kerk
2006-02-28 07:54
2006.03.26
WondeRu и Alter Ego of WondeRu с Днем рождения!


3-1138789349
chili
2006-02-01 13:22
2006.03.26
Подскажите как мне создать отчет с помошью QReport





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский