Newsgroup: it.comp.lang.delphi
Titolo: Stranissimo comportamento compilando di runtime package: le unit cancellate da disco riappaiono

Facendo uso della compilazione coi package runtime (package 
static loading) mi sono trovato di fronte a un 
comportamento stranissimo, di cui non so darmi spiegazione:
- dato un package runtime qualsiasi, contenente unit o 
form, una volta compilato e linkato a un eseguibile, se poi 
cancello fisicamente dal disco tutte o alcune unit o form 
presenti all'interno del package, poi riesco ugualmente ad 
aprirle dal package stesso e a ricompilarlo.
Preciso che ho oltre ai sorgenti anche provato a cancellare 
tutti i file generati dal compilatore (DCU, DCP, BBL) -
ovunque si trovassero, solo quelli realtivi al problema in 
questione ovviamente- ma mi sono ritrovato ancora i 
sorgenti!!!
Qui sotto i passi dettagliati di come riprodurre il 
comportamento (le voci di menu sono per D6, ma non è detto 
che le cose siano cambiate di molto in altre versioni e 
comunque il procedimento resta uguale):
0) creare una nuova cartella dove salvare il tutto;
1) creare una nuova applicazione;
2) creare un nuovo package;
3) aprire il package e crearci dentro -con File|New|Unit- 
una nuova unit e scriverci semplicemente questo:
unit Unit2;
interface
function React(const s: string): string;
implementation
function React(const s: string): string;
begin
  if s = 'ciao' then
    Result:= 'HOLA !!!'
  else
    Result:= '¿what?';
end;
end.
4) salvare il package col nome "TestPak" e tutto il resto 
coi nomi assegnati di default da Delphi;
5) a questo punto, TestPak dovrebbe contenere Unit2 (se non 
la contiene, aggiungerla manualmente);
6) andare nelle opzioni di TestPak e alla pagina 
Description impostarlo a "Runtime only";
7) andare nelle opzioni di TestPak e alla pagina 
Directories/Conditionals impostare "Output directory" e 
"DCP output directory" col percorso della cartella 
corrente;
8) compilare TestPak;
9) tornare a Project1, aprire Unit1.pas, metterci una
uses Unit2;
e nell'OnCreate della form solo questo:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage(React('ciao'));
end;
10) andare nelle opzioni di Project1 e alla pagina 
"Packages"nel riquadro "Runtime packages": mettere il segno 
di spunta su "Build with runtime packages", premere Add, 
poi Browse e scegliere "TestPak.DCP";
11) compilare Project1 (si può controllare se fa uso di 
runtime package dal menu Project|Information for);
12) eseguire Project1 e verificare che la funzione React 
viene effettivamente eseguita;
ma qui viene il bello:
13) andare nella cartella di cui al punto 0) e cancellare 
Unit2.pas, Unit2.dcu, TestPak.dcu, TestPak.bpl e 
TestPak.dcp (se si vuole si possono cancellare tutti i file 
esclusi i DPR, PAS, DFM e DPK);
14) ovviamente Project1 senza TestPak.bpl non può girare 
perchè questo è linkato staticamente;
15) chiudere TestPak, riaprirlo, poi cliccare su Unit2 e... 
da dove sbuca fuori il sorgente di Unit2? 
16) ricompilando TestPak vengono rigenerati Unit2.dcu e 
TestPak.bpl, quindi Project1 funziona ancora.
Ma se ho cancellato fisicamente Unit2, dov'era nascosto il 
sorgente???
Com'è possibile che tutto venga ricompilato correttamente 
se non c'è più la unit??
-- 
Mauro Falzari 
   [ 
http://digilander.libero.it/mauro.falzari
 ]
 
 "Se guardi nell'abisso, anche l'abisso guarda in te." 
   (Friedrich Nietzsche)

comportamento stranissimo, di cui non so darmi spiegazione:
Stando a quanto detto in passato, sembrerebbe un comportamento normale quello
di memorizzarsi i sorgenti al proprio interno.
http://snipurl.com/3zpa
Ciao!
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 
http://snipurl.com/3zpa
ho letto, la discussione è interessante per quanto riguarda l'uso dei package 
in genere ma non mi pare che risolva il mio quesito.
:-) Mi stavo appunto chiedendo DOVE il package memorizzasse i sorgenti, visto 
che nella prova che ho descritto, ho cancellato fisicamente tutti i file dove 
potesse trovarsi il sorgente (di Unit2). 
Nella mia prova rimarrebbe solo il file DPK, ma è un misero file di testo di 
poche decine di Kb...
Mah forse ho trascurato qualcosa, ricontrollerò per bene.


 comportamento stranissimo, di cui non so darmi spiegazione:
[CUT]
Ho seguito le tue istruzioni e a me questa cosa non accade. D7 pro.
Ciao
Antonio