Newsgroup: it.comp.lang.delphi
Titolo: Alcuni dubbi...

Oramai e' da un mesetto che mi cimento con Delphi6, ma mi rimangono
ancora un paio di dubbi "fondamentali":
1) Dove/Come devo dichiarare costanti, variavili, tipi in modo che
siano visti in tutte le varie unit del mio progetto?
2) Come cavolo si usano i Watch e gli Evaluate (nel menu Run)?!?
3) Ho inserito nell'evento OnActivate della form principale il
richiamo ad un'altra form (una specie di about box/splash screen), ma
ultimamente (da quando il programma si e' fatto + corposo) ricevo
(all'avvio, quando tenta di visualizzare la seconda form con un
ShowModal) un errore che dice:
Project raised exception class EAccessViolation with message "Access
violation at address 007BE496 in module 'VCL60.BPL', Read of address
FFFFFFFF'. Process stopped ecc ecc
Non ho la minima idea di cosa possa essere, anche perche' fino a poco
tempo fa funzionava perfettamente (e la parte di codice relativa alla
form secondaria e all'evento OnActivate non l'ho toccata!)...
Bye!
-- 
        <<* VeGeTa_CuBe *>>
 
http://members.xoom.it/vegeta3/

 2) Come cavolo si usano i Watch e gli Evaluate (nel menu Run)?!?
Cosa intendi?
Comncia a disattivare la ottimizzazione: project-options-compiler.
Se č attiva alcune variabili potrebbero non essere visibili dai watch.
Bye
A.

ShowModal) un errore che dice:
Controlla che nel sorgente della unit del progetto la create del form in questione
non sia stata spostata prima, e che nella form splash non hai aggiunto riferimenti
a compnenti/variabili/oggetti che magari non sono stati ancora creati....
Forse stai richiamando qualcosa che non e' stato ancora allocato.
Forse è un componente (vcl60.bpl)
Ti consiglio di spostare il codice di visualizzazione della splash nell'evento oncreate
del main e di nasconderla nell'evento onshow.
Ciao
Morde

 form secondaria e all'evento OnActivate non l'ho toccata!)...
Hai installato nella palette ed usato nella form dei nuovi componenti ? Se č
cosě prova a disinstallarli oppure a non usarli per vedere se torna stabile.
Hai l' update2 di Delphi 6 ?
ciao
guastatore

Se č attiva alcune variabili potrebbero non essere visibili dai watch.
Gia' fatto...


del main e di nasconderla nell'evento onshow.
Gia' provato... stesso identico errore! Inoltre se faccio cosi' mi da
errore anche in altri programmi (miei) che altrimenti funzionano...
Nell'evento OnShow non metto nulla xche' non mi e' chiero cosa dovrei
fare... io lancio lo splashscreen con ShowModal, puo' essere che cambi
qualcosa?


Hai l' update2 di Delphi 6 ?
Veramente non sapevo neanche della sua esistenza... e' grave? ;-)


Veramente non sapevo neanche della sua esistenza... e' grave? ;-)
un pò si :)
--
Rhymes (
rhymes_...@myself.com
)
http://www26.brinkster.com/rhymes
http://bw-crema.blogspot.com

 FFFFFFFF'. Process stopped ecc ecc
se non crei il form controlla che nelle opzioni di progetto il form sia
auto-create.

 ShowModal) un errore che dice:
Normalmente gli AV si hanno quando si tenta di accedere ad oggetti non
ancora allocati o gia' deallocati. Se poi si tratta di visualizzare una
splash l'OnActivate e' un po' troppo tardi. Verifica prima della
chiamata a suoi metodi che la form sia allocata (if Assigned(Form2) then
Form2.ShowModal).
Saluti
Paolo Arosio

con Delphi mi da sempre "process not accessible"...
A bocce ferme, prima di dare il run, vai nei sorgenti, selezionati con
lņa stessa modalita' le variabili che ti interessano.
Poi, segli menu' "Run->Add Watch (CTRL+F5)"
Il fatto che ti dia "process non accessible" e' perche' ogni oggetto
ha un ciclo di vita ed una visibilita': una variabile pubblica di un
form sara' "watchabile" (perdonami il neologismo :-) dal momento in
cui il form viene creato sino alla sua distruzione.
Una variabile interna ad una funzione sara' visibile solo nel momento
in cui entri nella funzione stessa, ma una volta uscito non sara' piu'
watchabile.
Alcune limitazioni inoltre sono dovute anche alle ottimizzazioni che fa
il compilatore, ti faccio questo esempio:
procedure test;
var s:string
    i:integer;
begin
   s := 'pippo';
   i := 12;
end;
se metti s sotto watch e col debugger ti fermi sulla i:=12, il contenuto
di s non sara' piu' visibile, nonstante sei dentro la procedura e non sei ancora
uscito. Questo perche' il compilatore ottimizza, ma in realta' s dovrebbe esistere
ancora, e la memoria utilizzata da essa liberata all'uscita della procedura.
Quanto al problema dei form/splash, dovresti postare il codice che genera lo scoppio.
Ciao
Morde

Allocato?... qua mi cogli impreparato...
Si dice allocato quando viene creato.
var Edit1 : Tedit;
beginů
 Edit1 := Edit1.Create; // allocato in memoria
 Edit1.....
 Eidt1.free //deallocato
end; 
ciao
Morde