Newsgroup: it.comp.lang.delphi
Titolo: Delphi 6 / DesignIntf

Ciao a tutti.
Ho installato Delphi 6.0 personal edition ed ho un problema nell'aggiungere
un vecchio componente (BAIOport, per accedere ad indirizzi di memoria).
Quando compilo mi viene detto che manca DsgnIntf.dcu; nell'help di delphi
c'è scritto di sostituire la unit con DesignIntf: fatto ma neanche questa
unit esiste! (infatti non è presente sull'HD).
Qualcuno ha avuto un simile problema (e lo ha risolto??)
Grazie
Almu


però se non ricordo male l'help dice anche di aggiungere altre unit,forse
dovresti guardare meglio...
ho avuto anch'io lo stesso problema ocn il richtext98 e son riuscito a
toglierlo appunto aggiungendo tutte le unit.Purtroppo richtext98 non
funziona ancora però per altri motivi.

Tino wrote:

Ho scaricato l'aggiornamento del Delphi6 dal sito Borland ed ho aggiunto la unt
DesignEditors (come consigliato nell'help): mission accomplished!!
Grazie Tino
Almu

 Almu
Povero illuso! Il componente è installato, ma quando lo vado ad usare in qualche
altro programma mi ridà lo stesso errore: DesignIntf.dcu mancante! Ma come ha fatto
ad installarlo allora?
Almu

Allora...
Marco Cantù nel suo sito 
DEDONLINE.COM
.
ti riporto il testo così capirai
La rimcompilazione di componenti propri o di terze parti fatti con Delphi 4,
in Delphi 5 e ancor più in Delphi 6 crea problemi per l'assenza del file
DsgnIntf.dcu (che contiene le dichiarazione delle calssi base di property
editor e component edior). Cerchiamo di analizzare il problema e vedere
alcune soluzioni.
Da licenza Borland, la unit DsgnIntf non può essere usata all'interno di
un'applicazione o di un componente usato da un'applicazione. Questo era già
così anche in Delphi 4 e 5, ma molti (troppi) sviluppatori hanno continuata
ad usarla. Allora Borland in Delphi 6 ha reso la regola vincolante.
Il motivo è semplice: DsgnIntf contiene buona parte del codice di Delphi
stesso, e quindi usandola in un programma si possonon inserire gli editor di
Delphi, facendosi un piccolo clone dell'ambiente di sviluppo (ovviamente in
concorrenza con Delphi stesso).
Visto il problema, cerchiamo ora la soluzione. DsgnIntf contiene solo editor
usati come base per i propri property e component editor. Tutto questo
codice, in Delphi 6 si trova compilato in un package nuovo, DesignIde, che
deve stare nei "requires" di ogni pacakge che vuole definire propri editor.
Il vincolo, però, è che questo non può essere usato come package runtime,
per cui anche il proprio package con gli editor deve essere un package usato
a desing time only.
Questo significa che se avete un package con un componente e degli editor
dovete "obbligatoriamente" (la cosa era già consigliata da Borland e da
tutti i vari libri) dividere il vostro codice in unit e package distinti:
uno per il componente vero e proprio e l'altro per tutta la parte design
time, compresi editor, register varie, ecc.
Purtroppo moltissimi componenti di teze parti, soprattutto quelli
"non-professionali" che trovate in giro per internet, ma anche alcuni a
pagamento, usano l'approccio di mettere tutto insieme e questo rende molto
faticoso il porting a Delphi 6 (cosa che se non sbaglio è comunque anche
descritta tra le novità del prodotto). Se vi capitano sottomano componenti
fatti diversamente fate pure avere queste mie note a chi li scrive: il
codice può essere strutturato bene (con la divisione dei package) anche in
Delphi 5 ed è consigliato anche lì.
Spero che questo aiuti i tanti che si imbattono nel problema. Il
suggerimento che trovate in giro per Delphi 5 (distribuire il file
DsgnIntf.pas) era già lì illegale, in Delphi 6 non è più applicabile,
proprio per i riferimenti ad altre unit non disponibili (ancor peggio
distribuire il DsgnIntf.pas di Delphi 5, che crea incompatibilità sulle unit
base in fase di compilazione con Delphi 6).
Per ulteriori informazioni potete anche leggere un articolo che spiega un
esempio concreto di divisione dei package su
http://community.borland.com/article/0,1410,27717,00.html
Questo è quanto.
Spero di essere stato utile. Ciao

Grazie David; purtroppo troppo complicato per me (non sono ancora arrivato
ai componenti e i package li ho visti appena!). Comunque ho risolto lo
stesso: del componente che dovevo installare ho estratto le procedure che mi
servivano (alcune linee in assembler per accedere a degli indirizzi di
memoria specifici, per leggere dati da una scheda autocostruita). Tutto ok
(per ora).
Ho installato il Delphi 6 Personal Edition: la prima novità sono la presenza
dei comandi Cut/Copy/Paste nel popmenù dell'IDE!
Almu

Anche se è troppo complicato per te che sei all'inizio con Delphi, ti ho
postato quel testo per farti capire ceh molto probabilmente il problema non
era causato da te ma da chi ha scritto quei componenti.
Infatti, come dici te, estrapolando le funzioni di cui necessiti funziona
tutto.
Beh, x ora, ciao, alla prossima!!!