2009-04-20 3 views
5

Ho visto che la maggior parte dei componenti (VCL) in Delphi sono divisi in due parti.
1) DesignTime pacchetto
2) Tempo di esecuzione pacchetto
Fuss su pacchetti Runtime e Design Time in Delphi

Perché tutto questo clamore. Che differenza fa se i pacchetti RunTime e DesignTime sono uniti in un unico pacchetto?

Non sono mai stato davvero in grado di comprendere questa logica di separazione.

Quindi qual è la logica dietro questo?

Una volta che ho avuto la testa qualcuno menziona che questa distinzione è stata fatta solo per evitare di adottare e seguire gli standard dei componenti come stabilito da Microsoft. Davvero non c'è logica dietro questo.

È vero?

risposta

11

A. Alcuni componenti dispongono di funzionalità di progettazione grandi e complesse come gli editor di proprietà, che non è possibile includere nell'applicazione runtime.

B. Alcuni produttori di componenti non desiderano concedere in licenza le loro funzionalità di progettazione in tempo reale e complesse per l'utilizzo in tempo reale senza diritti d'autore, ma limitano l'utilizzo da parte degli sviluppatori.

+0

Punto A: Che cosa succederebbe se dicessimo che i pacchetti DesignTime e RunTime vengano inclusi in EXE compilato? Lo sto chiedendo ora come un giorno. La memoria non è più un vincolo in quanto vi è quasi sempre ampia memoria disponibile in un dato momento. Sono d'accordo con il punto B in una certa misura, ma per un buon programmatore sarà un compito piccolo implementare la logica che non consentirà il caricamento dell'interfaccia DesignTime durante RunTime. Questo è sempre stato il caso con componenti COM senza problemi. –

+2

Sia che si utilizzino unità designtime o meno viene risolto in fase di compilazione, non in fase di runtime. I pacchetti sono DLL collegate staticamente. Pertanto l'uso di pacchetti rende il tuo eseguibile di destinazione dipendente da essi, ad es. Windows non sarà in grado di caricare ed eseguire il tuo eseguibile se non trova tutte le dipendenze. –

+0

Non penso perché se i pacchetti sono collegati staticamente, allora dove è la necessità di trovare tutte le dipendenze? –

4
  1. roba designtime può utilizzare Delphi interne unità/pacchetti a cui si non hai il codice sorgente né sono legalmente autorizzato a distribuire in forma binaria.
  2. Probabilmente non si si desidera rendere l'applicazione richiede Delphi da installare sul computer dell'utente .

La logica è di mantenere il proprio codice separato dal codice "colla" che lo rende piacevole con & nell'IDE.

+0

Supponiamo, ad esempio, se io come scrittore VCL di un controllo Grid, voglio dare la possibilità ai miei utenti di apportare modifiche a un layout Grid, ecc. In fase di esecuzione come sarebbero in grado di fare in fase di progettazione, quindi posso fare Questo? Dopotutto devo usare i controlli standard forniti da CG e costruirli, o devo creare da zero l'interfaccia utente da solo? –

+1

Sì, puoi farlo. Designtime fa riferimento alle librerie utilizzate dall'IDE di Delphi. Ciò include editor di proprietà, procedure guidate per la creazione di codice, in breve qualsiasi codice che interagisca con l'IDE. Ad esempio, l'editor TStrings che è possibile utilizzare nell'IDE per modificare la proprietà Items di TListBox è designtime. TListBox non lo è. Se si desidera fornire un editor simile ai propri utenti per consentire loro di modificare gli elementi in fase di esecuzione, è necessario fornire il proprio. –

5

Se si fosse realizzato un po 'di ricerca, avresti trovato this SO question chiesto meno di 2 giorni fa ...

Come già spiegato il motivo principale è che non si può includere qualsiasi unità Delphi design in un pacchetto di runtime. E non vi è alcun motivo per gonfiare il vostro eseguibile con un codice che può essere eseguito solo all'interno dell'IDE comunque.

+1

Questa dovrebbe essere la risposta accettata, ad eccezione dello snark. :-) –