Newsgroup: it.comp.lang.delphi
Titolo: interfacce

come si usano le interfaccie in delphi ?
grazie.
--
Gna...@Wappi.com

grazie.
parli delle interfacce della shell di windows ?
Bè, in ogni caso è un argomento vasto. Se ad esempio usi la classica
IShellLink, dichiari una variabile del
tipo:
var ShellLink : IShellLink;
begin
  ShellLink:=CreateComObject(CLSID_ShellLink) as IShellLink;
  ecc ecc...
dovrebbe essere così....se non funziona dimmelo.
Poi per ulteriori informazioni consulta l' SDK. ( almeno per sapere il nome
dei metodi da utilizzare ).
Per ora ti saluto......ciao !!
Antonio Tarolla

 dei metodi da utilizzare ).
SDK di cosa?
e che utilità hanno ?
grazie.
--
Gna...@Wappi.com

parli delle interfacce della shell di windows ?
Parla probabilmente delle interfacce quali tipi predefiniti del
linguaggio. Le interfacce definiscono dei metodi che possono essere
implementati da una classe. Somigliano alle classi, in quanto a
dichiarazione, ma posseggono dei limiti rispetto ad esse : non possono
essere istanziate direttamente e non sono loro a definire i propri
metodi. Oltre a non avere ne' costruttori, ne' distruttori, tutti i
loro membri sono pubblici e non possono essere ne' virtuali, dinamici,
astratti e quindi "override".  E' responsabilita' delle classi che
supportano queste interfacce fornire una implementazione per essi.
Questi costrutti sono particolarmente comodi se si programma con COM o
con CORBA.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
-----------------------------------------------------
"There is nothing better for understanding a kangaroo
 than seeing it jump." [D.Grune, C.J.H. Jacobs]
-----------------------------------------------------

 con CORBA.
Questo argomento è molto interessante.
Se non programmo COM o CORBA che utilità ho a implementare delle interfacce
?
Sempre supponendo che non si utilizzino le tecnologie sopracitate qualcuno
ha qualche esperienza di utilizzo delle interfaccie nelle proprie
applicazioni ?
grazie
Ciao
Solid Snake

 applicazioni ?
Io ultimamente sto facendo un po' di esperimenti in proposito [io mi sto
affacciando a COM, nello specifico oggetti OLE automation ma i concetti base
sono simili a quello che ti sto per scrivere].
Prova a fare così: prendi una DLL e scriviti una classe che ha solo metodi
tutti virtual e abstract. (niente proprietà, niente variabili nè pubbliche
nè private).
Ora deriva una classe da questa "astratta" [un' interfaccia è una classe che
ha solo metodi virtuali (e astratti) ] una classe "vera" dove implementi
(override) i metodi che avevi dichiarato.
Aggiungi una funzione (che dovrai esportare) che istanzia la classe "vera" e
restituisce un puntatore di tipo classe "astratta"
per intenderci:
TClasseAstratta = class
  public
    FaiQualcosa1; virtual; abstract;
    FaiQualcosa2; virtual; abstract;
end;
TClasseVera = class(TClasseAstratta)
  public
    FaiQualcosa1; override;
    FaiQualcosa2; override;
end;
procedure TClasseVera.FaiQualcosa1;
begin
  MessageBox( 0, Pchar('Qualcosa1'), Pchar('Titolo 1'), MB_ICONINFORMATION
or MB_OK);
end;
procedure TClasseVera.FaiQualcosa2;
begin
  MessageBox( 0, Pchar('Qualcosa2'), Pchar('Titolo 2'), MB_ICONINFORMATION
or MB_OK);
end;
Function CreateInstance: TClasseAstratta;
begin
  Result := TClasseVera.Create;
end;
exports
  CreateInstance;
Ora copia-incolla la dichiarazione della classe "astratta" in un project
qualsiasi e fa' in modo di poter richiamare la CreateInstance della DLL [non
importa se in dimanico o statico].
a questo punto puoi implementare quante volte vuoi le classi derivate da
ClasseAstratta ma richiamare dall'eseguibile sempre e solo FaiQualcosa1 e
FaiQualcosa2...
Puoi avere n DLL disponibili tra cui scegli _quale_ distribuire a _quel_
cliente o per _quel_ programma... puoi anche derivare + classi nella DLL e
decidere nella CreateInstance _quale_ istanziare (ritornando sempre un
puntatore ad un oggetto di tipo TClasseAstratta).
Il tutto si basa sul polimorfismo. Potenza della OOP: posso scrivere un
programma fatti di singoli moduli e ampliare nel tempo i singoli moduli
senza dover riscrivere gli altri ( ovvio che non vale proprio sempre ma
diciamo che se strutturi bene le cose dovrai ricompilare il meno
possibile... )
Così puoi anche riutilizzare la stessa form "InserimentoDati" in n
applicazioni e avere sempre uno standard...
Ciao :-)
Ps: il codice sopra non è testato ma scritto al volo: spero di non aver
commesso errori...
--
(¯`·.¸¸.·´¯`·.¸¸.-> Andrea <-.¸¸.·´¯`·.¸¸.·´¯)
AntiSpam: rimuovere il trattino basso dall'indirizzo per rispondere
AntiSpam: remove the underscore from the e-mail address to reply

Grazie,
credo di aver capito il concetto.
Ciao
Solid Snake