Newsgroup: it.comp.lang.delphi
Titolo: riferimento ad oggetti

 Devo potermi riferire ad un oggetto in modo tale che se l'oggetto č una
Timage il riferimento sia di tipo Timage, se č di Tipo TStaticText, il
riferimento sia di tipo TStaticText.
Lo so che sono le basi del mestiere, ma non so come fare .. :(((((
Grazie
--- posted by geoForum on 
http://www.delphiedintorni.it

 riferimento sia di tipo TStaticText.
var
  C: TComponent;
...
if C is TImage then (C as TImage).Proprieta := Valore
else
if C is TStaticText then (C as TStaticText).Proprieta := Valore;

--- posted by geoForum on 
http://www.delphiedintorni.it
	Ciao
	MassimoB
 


Intanto grazie!
Perň, per poter far divenire C un tipo di componente come faccio?
Ex:
var Pippo:Timage;
begin
facendo c:=pippo sono sicuro che c č la stessa istanza cui punta pippo?

 facendo c:=pippo sono sicuro che c č la stessa istanza cui punta
pippo?
Non capisco bene che vuoi dire...

 riferimento sia di tipo TStaticText.
sinceramente, non ho capito. puoi spiegare meglio cosa devi fare?
A

 ha scritto nel messaggio
news:c3rnnq$2bt4$1...@newsreader1.mclink.it...

Io ho una variabile oggetto che contiene il nome di un componente. Vorrei
usare questo nome di variabile per far puntare ad una variabile generica
l'oggetto in questione, che non so se è di tipo testo o di tipo immagine.
Grazie

 if C is TStaticText then (C as TStaticText).Proprieta := Valore;
io scriverei:
  var
    C: TComponent;
  ...
  if C is TImage then
	TImage(C).Proprieta := Valore
  else
  if C is TStaticText then
	TStaticText(C).Proprieta := Valore;
Ciao Daniele

 TStaticText(C).Proprieta := Valore;
No, č meglio usare "as", il typecast č un'operazione da rendere il piů
sicuro possibile.

 sicuro possibile.
Andrea, as non č altro che un is e un cast brutale, con il sollevamento di 
un'eccezione se il confronto con is restituisce false.
La tua versione, scritta cosi, fa 2 volte il confronto con is.
Non č che non funziona, č solo piů lenta (poi di quanto non si sa)
AFAIK
Ciao Daniele

 Non č che non funziona, č solo piů lenta (poi di quanto non si sa)
L'ultimo dei problemi.  Se parli di lentezza dovuta al run-time type
identification, visto che in Delphi si fa uso massiccio del
polimorfismo (gli "oggetti", in Delphi, sono reference), allora
prendiamo la VCL e buttiamola nel gabinetto.

 prendiamo la VCL e buttiamola nel gabinetto.
??? se derivi da TObject non puoi usare il polimorfismo?
il RTTI č presente da TPersistent in poi. Che c'entra con il polimorfismo?
Scusami, questa non l'ho capita :-(

 il RTTI č presente da TPersistent in poi. Che c'entra con il
polimorfismo?
Voglio dire che il polimorfismo č una delle cause, insieme al RTTI,
della "lentezza" a run-time, quindi se ci si preoccupa della lentezza
per queste caratteristiche, la VCL č tutta da buttare.

 per queste caratteristiche, la VCL è tutta da buttare.
Io della lentezza mi preoccupo sempre... quella che inserisce il framework (o 
linguaggio) posso farci poco, al massimo le aggiro, ma sto attento a non 
inserire cose inutili io!
Non stiamo parlando di 10 gg/u per ottimizzare una procedure ma di una cosa 
immediata a costo zero.
Ciao Daniele

> Io te l'ho spiegato quale è la "best practices", fai come vuoi...
Ma per piacere...

punto.
Falso, il confronto viene fatto eccome.
Una volta nella vita ammettere di aver torto (fosse poi grave) è
troppo vero Laforgia?
-- 
"La velocità luce non è sufficiente Comandante Nunziatella, 
dobbiamo passare alla velocità smodata!"

> Falso, il confronto viene fatto eccome.
E' vero, viene fatto, nella fretta ho letto il cast esplicito e non il
controllo a monte.

 troppo vero Laforgia?
p.s.: faresti bene a non svegliarti solo quando c'è odore di polemica
;-)



E' più divertente non trovi ? :P
