Newsgroup: it.comp.lang.visual-basic
Titolo: END in COM?

ho un modulino .bas "comune" a più prog, che ha anche un "End" per uscire da
tutto
volevo usare il modulino anche per un oggetto COM, ma VB mi dice che i COM
non possono avere L'End....
Grazie.


E tu toglilo l'End.
Saluti.

 ha scritto nel
messaggio news:biiefc$396$1...@newsreader2.mclink.it...


beh, mi pareva chiaro che l'End ci fosse perchè serviva, e il modulino fosse
usato da altre centinaia di migliaia di altri bei sorgentini che l'end lo
usano come piovesse...

 sorgentini che l'end lo usano come piovesse...
In una Sub o in una Function l'End non è che serva a molto.....
Però il mondo è bello perchè è avariato.
-- 
-- 
Saluti e salute a tutti.
________________
Gabriele Del Giovine [Microsoft MVP] - Windows 2000 - Windows NT 4.0
- Le informazioni fornite in questo messaggio sono fornite
  senza vincolo di garanzia e senza responsabilità alcuna.

Marte ha scritto:

L'end non andrebbe mai usato.
Se lo fai c'è qualcosa di sbagliato nella logica.
Puoi provare a sostituire l'END con la TerminateProcess() che se non 
ricordo male vuole l'App.hIstance come parametro.
L'unico problema è che se da compilato non dovresti riscontrare 
differenze, da interpretato dato che il tuo programma gira nello stesso 
processo di VB ti si butta giù tutto.
Eventualmente trova un modo (che so, un flag) e anzichè dare l'end fai 
scatenare un evento tipo QueryEnd che intercetterai dall'esterno.
Questa soluzione è anche più pulita perchè ti da la possibilità di 
scrivere codice di "pulitura".
Ciao

 sorgentini che l'end lo usano come piovesse...
Alla luce di tutto questo, non ti sorge il dubbio che mettere un End in un
Bas da riutilizzare sia una porcheria?
Ciao
Alberto

 ha scritto nel messaggio
news:Dm33b.269371$Ny5.8...@twister2.libero.it...

NO, visto che per i restanti milioni di sergenti andava benissimo! nessuno
di loro si è mai lamentato e tutto andava da dio.

 Bas da riutilizzare sia una porcheria?
Assolutamente sì.
Se un modulo deve essere riutilizzabile lo deve essere sempre.
Altrimenti sposti tutte le tue sub strettamente da "EXE" in un altro modulo.
E comunque già il concetto di far terminare l'app da una sub in un 
modulo anzichè nell'oggetto principale del programma non è una gran trovata.
Bastava che tale funzione restituisse true o false e in uno dei due casi 
eseguire l'end.
Ciao


Concettualmente si.
Dato che dentro un modulo ci metti funzioni e procedure.
La cosa non è pericolosa quando si tratta di programmi exe.
Diventa terribilmente pericolosa, per come è fatto COM, quando
quel codice sta dentro degli oggetti COM richiamati in-process
da altri processi. Chi fa le operazioni di garbage-collection se
ammazzi colui che deve fare l'operazione di garbage-collection?
Per fortuna che Java e .NET risolvono il problema alla radice :-)


 nessuno di loro si è mai lamentato e tutto andava da dio.
Beh, sei come quelli che scrivono in Word senza usare gli stili.
Il documento viene stampato benissimo, ma la riusabilità ne risente.
E, di conseguenza, la tua efficienza e produttività.
Comunque, se anche di fronte al fatto compiuto non ti rendi conto che
qualcosa non va nel tuo concetto di struttura del progetto, non so che
dirti.
Per curiosità, nel modulo bas usi anche variabili Public?
Sai, magari i 'milioni di sergenti' non si sono mai lamentati, ma qualche
tenente... chissà...
Ciao
alberto

 Se lo fai c'è qualcosa di sbagliato nella logica.
mah.... sai ...
c'è un comando, primitivo, che chiude il prog, fa l'unload di ogni form,
chiude i files aperti, fa tutto... dire che non andrebbe mai usato è una
questione veramente da puristi mi pare.
Da qua a dire che la logica è sbagliata mi sa che ce ne passa ancora un
pochetto.
pure in C c'er il comando GOTO (che nonm ho mai usato, ma era consigliato
l'uso nel kerningan-richie come
if (#disastro#)
    goto errore;
non vi ho chiesto di entrare nel merito della limpidezza del mio codice, ma
solo di spiegarmi come fare un end da COM...
allora ecco la domanda da niubbone! EVVAI!
se il mio com sta sempre su, e non ha form, ma solo controlla se succede una
certa cosa ciclando in una sub main (zeppa di doevents, non ti preoccupare),
e se succede quella cosa si deve "spegnere"... beh... come si fa?
TI PREGO, non mi dire che .... eventi... timer... api.... logica sbagliata.
ti ho riassunto in modo estremo quello che devo fare, e ti giuro giuro che
un bell'end mi risolverebbe certi problemucoli fastidiosi soprattutto in
"quei giorni", a lui ed agli altri 5.2*10^4  prog
Grazie.

 tenente... chissà...
questo è OK per it.Zelig. ;-)

facciamo così, visto che non si riesce a rispondere senza dare giudizi
critico-filosofico-cultural-politici sullo stile di programmazione degli
altri senza sapere che programma è...
rifaccio la domanda.
Come suicido un COM?

 questo è OK per it.Zelig. ;-)
Mi adeguavo.
Comunque, tornando al tuo quesito iniziale.
Stavi chiedendo come fare a utilizzare, in un progetto per un oggetto Com,
un modulo bas che contiene anche l'End.
Siccome l'End nel com non funziona, credo che l'unica cosa fattibile sia
toglierlo, ma la risposta che ti hanno dato non ti va bene.
Quindi, cos'altro vuoi sapere?
ciao
Alberto

 L'end non andrebbe mai usato.
Mo non esageriamo :-)
Saluti.

 Come suicido un COM?
Questa non è la stessa domanda.
Prima hai chiesto come poter riutilizzare il modulo bas, non come uccidere
un Com.
Quindi non incazzarti se le risposte non ti andavano bene, visto che tutti
hanno capito una cosa diversa.
ciao
Alberto

 TI PREGO, non mi dire che .... eventi... timer... api.... logica
ti ho detto exit for! :P

 Se fossi io saresti già a casa, con una cazzata così.
Per un End messo tu mi licenzieresti? Con il programma (che è enorme, per la
cronaca), che gira da parecchi clienti da 2 anni senza un minimo intoppo?
Bravo lungimirantone!
Sono contento per te che lavori alla NASA, dove avete mesi per consegnare.
Io, purtroppo, lavoro in un posto diverso.
curiosità, sei ingegnere?

 ha scritto nel messaggio
news:0M33b.269450$Ny5.8...@twister2.libero.it...

questa non è una risposta.

 curiosità, sei ingegnere?
Dei migliori, fra parentesi.
Alberto

Concludo:
GRAZIE a chi ha cercato di capire il mio problema
GRAZIE a chi mi ha dato consigli
$Ł%"Q$&%"&%$ a chi ha cercato di farmi capire che faccio programmi di merda,
senza sapere COSA faccio, PERCHE' lo faccio, QUANTO tempo ho, COME devo far
girare quello che faccio girare.
alla domanda "come arrivo in via xyz" non ho mai risposto giudicando il
fatto di arrivarci o il fatto di partire da lě.
Forse qualche perfettino dovrebbe veramente pensarci............

> > curiosità, sei ingegnere?
ci avrei scommesso la casa. molti di voi li si riconosce dalla luna


Se è un in-process non si suicida.
Lo uccide chi lo chiama impostandolo a nothing.


 Lo uccide chi lo chiama impostandolo a nothing.
viene lanciato da ASP, quindi via iis.

 ci avrei scommesso la casa. molti di voi li si riconosce dalla luna
E molti incompetenti, sulla terra.
-- 
Saluti
Andrea Moro


Scusa se mi intrometto, ma vorrei solo dire che se se qualcuno competente in
una materia (che lo sia piů o meno di me non importa, e mi pare che le
persone che ti hanno risposto siano piuttosto competenti), cerca di
spiegarmi che una determinata cosa puň essere migliorata, prima di
innervosirmi cerco di ripensare razionalmente all'argomento trattato e, se
poi sono convinto che la strada da me percorsa sia la migliore, ringrazio e
saluto. Spesso poi succede che a distanza di tempo, facendo qualcosa di
completamente diverso, mi vengono in mente discussioni avute in passato le
quali, nel contesto corrente, mi portano alla soluzione del mio problema.
ciaociao

 viene lanciato da ASP, quindi via iis.
Questo non lo avevi detto, quindi ritenevo la mia prima risposta piů che 
esauriente sui metodi alternativi da adottare.
Adesso perň la domanda č: ASP ha come processo IIS.
Come puoi usare un'END in una situazione cosě?
Vuoi bloccare IIS se qualcosa non va?
Non credo, probabilmente non riesci a compilare l'oggetto perchč in una 
funzione che non andresti nemmeno a utilizzare c'č questo END.
Allora fai cosě: definisci nelle proprietŕ del progetto una cost. di 
compilazione, che so, COM_OBJ, e nel tuo modulo fai:
#IF NOT COM_OBJ then
	Function FunzioneConEnd()
	' ...
	End Function
#End if
Ciao

 beh... come si fa?
Nell'oggetto COM dichiari un evento che dice che si è sfaciato tutto.
Gestisci il disastro all'interno dell'oggetto COM ed
invochi l'evento e come per magia nell processo che ha istanziato
l'oggetto come (dichiarandolo con la clausola With Events)
verrà eseguito il codice che tu vuoi.
Se non vuoi gestire l'evento almeno assegna un valore di ritorno al metodo
principale dell'oggetto.
Se poi vuoi fare le cose "da uomo duro" potresti usare un callback con un
AddressOF.
Saluti.

 Alberto
Letto questo post, mi vedo costretto ad interrompere la mia lunga
attività di lurkatore ed a mandarLe questa mia, Egregio Dott.Ing.(e
dei migliori)Gr.Lup.Mann.
Senza voler entrare nel merito della diatriba (al cospetto di simili
Dott.Ing.Gr.Lup.Mannari me ne guarderei comunque bene...) mi chiedo
quale attività Lei svolga nel vasto mare dell'Informatica.
(sempre con la I maiuscola, s'intende)
Progettazione di Sistemi Operativi?
Supervisione software di autopilotaggio Shuttle?  
Ultimi ritocchi al software dei computer serie HAL 9000?
Certo il fatto che Lei utilizzi Visual Basic mi porterebbe più a
considerarla un mangiatore di Quique come la mia umile persona
piuttosto che un Vero Programmatore, ma dato che si tratta di Lei,
Esimio Dott.Ing.Gr.Lup.Mann., sgombro facilmente la mia mente da
simili assurdi sospetti.
Nel salutarLa come si conviene ad un Dott.Ing.Gr.Lup.Mann., mi
permetta comunque di ricordarLe che
 ** Chi si loda si sbroda **
[eh la vecchia saggezza popolare...]

 (sempre con la I maiuscola, s'intende)
Una ricerca neim post precedenti potrebbe soddisfare tra le altre a nche
questa tua curiosità! <bg>

 [eh la vecchia saggezza popolare...]
Raramente ho visto una persona più modesta (e spesso ironica) di Albe.
Raramente ho visto una persona che, nel contempo, trasmette più serietà (e
capacità) professionale come Albe.

 capacità) professionale come Albe.
Come già accennato sopra lungi da me questionare sulle competenze di Albe,
già il fatto che ci sia  qualcuno che spezza una lancia in suo favore è un
buon indizio, inoltre proprio x entrare nel merito del thread ritengo che
abbia 1000 volte ragione. Però la sua  modestia ha avuto (secondo me) una
defaillance nel post a cui ho replicato, capisco che possa scocciare chi
chiede aiuto e poi prende critiche costruttive come attacchi personali, ma
ho trovato la cosa un pò "gratuita", c'erano sicuramente altri modi x
rispondere.
Ciao

 "gratuita", c'erano sicuramente altri modi x rispondere.
Sì, ebbene sì (credo di poterlo affermare), anche Albe è un essere umano e,
se mi posso permettere, "per fortuna".
Secondo me non ha avuto "un calo di stile" nel rispondere "Dei migliori, fra
parentesi.", ma coerentemente (e anche ironicamente) risposto alla domanda
"curiosità, sei ingegnere?" che (senza pensare alla diatriba fra
architettura e ingegneria del Poli di MI, che ho avuto la ventura, pur per
poco, di frequentare, ovviamente dalla parte dei secondi) fa immediatamente
pensare, così come posta, a uno "sputo per terra". Io, invece, alzo il
cappello. A Ing. e Arch. Se poi nel titolo gruatuito c'è pure un
(fantozziano, lo so) ".Lup.", ecco, mi si drizzano le orecchie, com'è nella
mia natura. ;-)


[CUT]
Devo ammettere che quella domanda non mi era sembrata offensiva, ora perň mi
hai messo il dubbio....
Per concludere: per caso sei poi passato da ingegneria a giurisprudenza ?
:-)

[*aaanfamone*=
aaanf...@hotmail.com
] ha scritto:

No, son venuto a casa. A lavorare.

 ha scritto nel messaggio
news:bildm6$anv3h$1...@ID-174464.news.uni-berlin.de...

Ehmm... non volevo farmi gli affari tuoi era solo una battuta x dire che te
la cavi bene con le arringhe difensive... quando nessuno capisce il tuo
senso dell'umorismo cominci a porti delle domande su te stesso... :(


LOLLONE!
ciao
ugo

 sorgentini che l'end lo usano come piovesse...
O_o l'end da solo non serve MAI, io lo uso solo per ultrapignoleria
associata ad altre proc di chiusura ! _TOGLILO_
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 associata ad altre proc di chiusura ! _TOGLILO_
E allora, in queste condizioni, _LASCIALO_!
Giusto per esser sicuri che, per un pippolo lasciato, non ti masturbino il
computer anche da spento, come qualcuno ebbe a dire...

 Come suicido un COM?
con procedure di chiusura e distruzione oggetti, in un com a cosa mai
potrebbe servire un end diretto ?
I com sono gestiti "abbastanza bene" dal vb, l'unico problema della queue e'
che a volte in presenza di errori non gestiti rimanga un indice che tiene
vivo l'ultima istanza del com anche se effettivamente non ci sono piu'
riferimenti ad essa, guarda a questo punto vorrei sapere MEGLIO cosa fa il
tuo com cosi eventualmente si puo' sceglere la via migliore per "suicidarla"
!
