|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
OLE e Borlan Builder
sto usando queso codice per aprire e chidere un foglio di excel ma all'uscita Excel mi rimane costantemente in memoria
c'è un motivo ? c'è qualcuno che conosce OLE ? grazie 1000 in anticipo Codice:
if (OpenDialog1->Execute()) //*.xls-Dateinamen + Pfad angeben
{
try
{
Variant Excel;
Excel = Variant::CreateObject("Excel.Application");
Excel.OlePropertyGet("ActiveWorkBook");
// Excel-Datei öffnen
Excel.OlePropertyGet("WorkBooks").OleFunction("Open", OpenDialog1->FileName);
//Excel.OlePropertySet("Visible", true); //Excel beim Arbeiten anzeigen, false = ausblenden
Variant Sheet;
Sheet=Excel.OlePropertyGet("ActiveSheet");
AnsiString Zelleninhalt = Sheet.OlePropertyGet("Cells", 1, 1).OlePropertyGet("Value");// Zeile 1, Spalte 1 auslesen
ShowMessage(Zelleninhalt);
ShowMessage("Excel wird jetzt wieder geschlossen");
Excel.OleFunction("Quit");
Excel = Unassigned;
}
catch(...){}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
possibile che utilizzo solo io queste, chiamiamole tecnologie strane di windows ?
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
caspita che pigroni che siete.....
vi risulta che l'utilizzo di tecnologia OLE nei propri programmi abbia prestazioni scadenti ? io con un codice simile a quello del primo post, impiego 20 secondi per trasferire dati da un foglio di Excel su file; possibile avere prestazioni così scadenti ??? |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
up
se guardate il codice da me postato, osseverete che utilizza l'ole automation parlando di compilatori: io, per usare tali funzioni da "iniettare" dal BCB (Borland Builder C++) includo il seguente file: #include <utilcls.h> mi viene un dubbio da tale file, è possibile risalire alle funzioni che sono implementate nel compilatore in mio possesso ? a me durante la fase di compilazione non vengono generati errori, ne vedo solo in fase di esecuzione |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Lungi da me essere un guru di OLE, ma sei sicuro che questa
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
non sono una mago neppure io, difatti quella chiamata svolge malissimo il suo compito
Excel rimane ancora in memoria tieni presente che quel codice è un esempio che ho trovato in rete e l'ho preso così com'è |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Non c'è un metodo "release" o simili?
Rimuovi anche l'assegnazione di Unassigned; può darsi che alla distruzione dell'oggetto variant, viene invocato il codice di rilascio automaticamente.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
non esiste quanto dici.....
in rete si trovano esempi solo su siti francesi e cinesi o giapponesi anche eliminando quello che tu hai detto non accade nulla per questo ho iniziato a dubitare che il BCB che possiedo io, magari non implementa tutte le funzioni in quanto, la visualizzazione de messaggi di errore avviene solo dopo l'esecuzione del programma e non in fase di compilazione se apro il task manager mi ritrovo costantemente Excel in esecuzione Variant Excel; Excel = Variant::CreateObject("Excel.Application"); negli esempi che si trovano in rete, con: Excel.OleFunction("Quit") dovrebbe venire rilasciato l'oggetto creato sopra, ma tale chiamata non sortisce l'effetto desiderato |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Prova a cambiare tecnica...importa la tlb (type library) di Excel ed usa direttamente quella
Almeno puoi vedere i metodi supportati dai vari oggetti...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
ho trovato OleView, ora ci guardo
grazie Ultima modifica di misterx : 19-11-2004 alle 08:36. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
è incomprensibile quello che si legge
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
|
va bene, ho messo il tutto a posto con un trucco anche se il Quit funziona molto male, bah...
mi stavo chiedendo come ovviare al non multitask del programmetto sopra nel senso che: quando lo eseguo, durante la fase di apertura di Excel e del relativo foglio, il mio programma viene messo a tacere durante l'esecuzione del mio programma per far capire all'utente che il tutto sta funzionando correttamente, ho implementato un piccolo orologio che purtroppo si ferma nel momento in cui inizia la fase di apertura di Excel e del relativo foglio quando il controllo poi torna al mio programma, torna a funzionare però quella pausa da veramente fastidio c'è un modo per evitarla ? |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Fai un thread
Che trucco hai usato ? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:21.



















