Newsgroup: it.comp.lang.delphi
Titolo: Uso di Excel

Salve a tutto il newsgroup....
vi espongo il mio problema ... ho realizzato un piccolo programma che
riempie un foglio excel con dei dati e lo salva utilizzando l'oggetto che ci
connette in COM ad Excel (ExcelApplication).....
tutto bene ( a parte un errore in fase di salvataggio perchè lo salvo in un
altro file... classico savaAs) .
Il problema nasce quando prendo pari pari il codice e lo vado a mettere in
un applicazione più grande. Non appena tento di utilizzare Excel, mi da il
seguente errore...
Eccezione della classe EOleSysError --  CoInizialize non è stato chiamato!
Ma cosa cavolo è sto CoInizialize..... premesso che ho provato tutte le
varie proprietà dell'oggetto mi viene da pensare che l'applicazione è forse
troppo pesante (cmq l'eseguibile è di 2 Mega... non tantissimo!), visto che
non c'è altra differenza con l'altra applicazione o altre che ho realizzato
altre volte!
Grazie a tutti.
Ciao

 altre volte!
La funzione CoInitialize (questo è il suo nome corretto) e la 
controparte
CoUninitialize sono documentate nell'help: premendo F1 nell'IDE 
avresti
scoperto che è ESSENZIALE per cio che devi fare (usare oggetti COM
via OLE) in quanto inizializza la libreria COM. Il codice che usi per
lavorare con oggetti COM creati a runtime deve essere simile a
questo - non hai mostrato linee di codice ed è perciò difficile
darti info più dettagliate:
begin
  CoInitialize(nil);
  try
   // crei gli oggetti COM e li usi
 finally
   CoUninitialize;
 end;
end;
Ciao
-- 
ACSH
[D4]
Chi fa da se', fatica il doppio

saro ottuso, ma usando createoleobject non ho MAI chiamato direttamente
coInitialize....e non ho mai avuto problemi....
AS

 coInitialize....e non ho mai avuto problemi....
confermo...ho appena creato un'applicazioncina stupida (che prende una
bitmap e la simula con excel.. :-D) e non c'è traccia del coinitialize.
Se siete curiosi, 
http://snipurl.com/ImmaginiX
   :)
-- 
Lis        
www.alessandroghezzi.it
O'Telma:   
http://snipurl.com/otelma
Il riso è il sole che scaccia l'inverno dal volto umano (V.Hugo)

 coInitialize....e non ho mai avuto problemi....
Mi sono documentato e credo di essere stato un po' troppo
superficiale (ma non avevo torto completamente): 
Delphi lancia la CoInitialize all'avviamento dell'applicazione
- credo in Application.Initialize - ma vale solo per il thread 
chiamante/principale; ogni altro thread (in una applicazione 
multithread, per esempio) č necessario usare codice simile
a quello che ho postato.
Un link: 
http://bdn.borland.com/article/0,1410,29240,00.html#
Purtroppo le mie conoscenze in questo ambito non sono
molte (e la pratica e' ancora minore).
Ciao.
ACSH
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Se siete curiosi, 
http://snipurl.com/ImmaginiX
   :)
E se lo fai in un thread?
(Ho problemi con la connessone e non so quanto potro'
rispondervi velocemente)


 E se lo fai in un thread?
I un thread non ho provato, può darsi che tu abbia ragione
-- 
Lis        
www.alessandroghezzi.it
O'Telma:   
http://snipurl.com/otelma
Se un po' di sincerità è pericolosa, molta sincerità è addirittura fatale
(Oscar Wilde)