Newsgroup: it.comp.lang.visual-basic
Titolo: API e chiusura dei programmi

Ciao ho questo problema:
Imposto una api per il Timer con la procedura normale o
facendo il subclassing come da esempio sul sito comune (piccole perle-
all'interno dell'articolo sceen saver)
Fino a quando il timer viene inizializzato e distrutto senza chiudere il
form, va tutto bene, ma
quando alla procedura richiamata dal timer (con addressof o con il
subclassing) aggiungo
un "End" per terminare il programma, il VB si chiude con un errore di
sistema.
Mentre se chiudo il form con la x della barra il programma termina
naturalmente.
Qualcuno puo' darmi una mano?

Regola #1 quando si fa uso di Subclassing, assolutamente mai usare END.
In questo caso non viene ripristinata la corretta WndProc che continua cosí
ad essere chiamata da Windows, non essendo, quell'indirizzo, piú valido il
risultato é GPF!
Ciao,
Corrado

Corrado Cavalli wrote:

Allora:
1)     grazie per la risposta
2)     un qualche dubbio mi era venuto che quello era il problema, ma come
fare?
        devo terminare il programma ad un evento preciso dettato dal timer.

L'istruzione END non è mai consigliata in generale. Se proprio vuoi usarla,
prima dell'END ripristina la Window Procedure dell'oggetto che hai
subclassato.
Ovviamente, MAI premere lo Stop dell 'IDE di VB.
Ciao,
Corrado

 Corrado
Ciao
Pasquale

"subclasso..")
oldAddress = SetWindowLong(hwnd, GWL_WNDPROC, _ AddressOf wndProc) ' Questo
è per intercettare il flusso dei messaggi
oldAddress = SetWindowLong(hwnd, GWL_WNDPROC, _ oldAddress  ) ' E questo è
per ripristinare il flusso standard.
Ti rammento che la  seconda chiamata va inserita preferibilmante nell'evento
Unload del form subclassato.
Come giustamente ricordato dai colleghi, NON TERMINARE il PRG con END,
oppure RUN/STOP in fase di design.
Genesio

Genesio Conti wrote:

Diciamo che va meglio in quanto il rpogramma non va in crash con tutto il VB,
ma richiamando Unload NOMEFORM dove nella sub Queryunload del form
e' messa la procedura per sganciare la window (come da esempio di VB: routine
"unhook")
si scarica il form ma continua la sua esecuzione nonostante abbia richiamato
anche la Killtimer
Per la cronaca, se ne faccio un .exe, il nopme del programma continua ad essere
presente nella finestra per la
chiusura dei programmi.
Non so se sono riuscito a spegarmi, comunque grazie dell'aiuto
Pasquale

Probabilmente hai qualcosa che tiene in vita il programma (forse il codice
dove richiami Unload?).
Verifica di non avere codice in esecuzione oppure oggetti caricati
Prova a scaricare tutti i form con:
For Each Form in Forms
    Unloaf Form
Next
Ciao,
Corrado

Corrado Cavalli wrote:

Incredibile tempestivita'
dunque il progetto e' composto da un form due moduli .bas
il timer richiama una semplice procedure che non si annida con altre
quindi non so che pesci prendere.
anche perche' non riesco ad usare l' esecuzione con F8 per vedere che codice
esegue
Ho provato anche come hai detto tu, ma niente..

 Ho provato anche come hai detto tu, ma niente..
Mi rettifico:
ho sbagliato a scrivere la windowproc che intercettava i messaggi e mi causava
l'errore
Ora ho risolto il problema
Grazie a tutti.
In ogni caso sto cercando di scrivere un programmino per il calcolo dei costi di
connessione, se ci riesco chiedero' al curatore del sito M.Sirri
se sara' interessato ad ospitarlo nel suo sito, cosi' potrete vedere quale era
il problema.
Ciao e grazie ancora
Pasquale

il problema.
1)	Il sito a cui credo tu ti riferisca è il Sito Comune di questo Newsgroup: quindi è mio così come è tuo e di
tutti quelli che frequentano questo luogo di discussione: non ha un proprietario, ed il WebMaster (cha attualmente è
Alfonso di Stasio) è anch'esso uno di noi (senza togliere nulla ad Alfonso... ^___^)
1.1)	Io ho curato quell'articolo e la rubrica "Libri & Visual Basic" che uscirà tra pochissimo, ma non tutto il sito:
quello è merito dei WebMaster presenti, passati e futuri e di tutti coloro che hanno inviato i loro lavori....
2)	Se hai bisogno di aiuto per quello che vuoi fare, sono disponibile.
2.1)	Comunque se ti interessa sul sito comune, se non erro, dovrebbe già essere presente un contascatti e finalmente,
dopo che, causa l'articolo, ho aiutato diverse persone a farne uno, anch'io ho praticamente finito il mio, con un sacco
di opzioni carine e compatibile con qualsiasi abbonamento, integrando delle funzioni che nell'articolo non ci sono
ancora, ma ci saranno appena lo riscriverò (e appena riuscirò a far funzionare, assieme a Chin Paolo, un'APE
"nuova")....
3)	Se hai già fatto qualche programmino che credi possa servire ad altri e desideri "offrirlo", mandalo al
WebMaster (l'indirizzo lo trovi sul SC (=sito comune))
Ciao,
Moreno
#sirri#@
tin.it
(togliete "#" dall'indirizzo)

 (togliete "#" dall'indirizzo)
Per quanto riguarda il sito avrei un consiglio, perche' non mettere qualcosa che oltre alla risoluzione tecnica dei problemi
si interessi  dello sviluppo "concettuale" del programma.
Colgo l'occasione per  ringraziare te ed i partecipanti al newsgroup per lo spirito cooperativo
Ciao
Pasquale D'Alessandro

si interessi  dello sviluppo "concettuale" del programma.
Intendi dire "Mentalità di programmazione e medoto di affrontare i diversi problemi?"
Azz....
Più facile a dirsi che a farsi....
Perché non provi a buttar giù un esempio tu?


 (togliete "#" dall'indirizzo)
Lo farei volentieri, ma non credo di essere la persona piu' adatta, sono uno studente di economia e programmo per
puro diletto.
Comunque per  chiarire cio' che dico, faccio questo esempio:
1) Mi sono chiesto :Il contatore di cui ho bisogno deve comprendere 2/3 programmi separati?
        ho pensato che un programma piccolo, giusto un po' di codice, deve essere quello incaricato di verificare la connessione;
        piccolo perche' non deve occupare memoria ne CPU, poi ci saranno dei moduli separati incaricati di gestire il vero
contascatti
        e la visualizzazione di un file "log" (dove registro i dati * ogni connessione )
                   sub 1) fino a quando posso ridurre il tempo del timer senza impegnare troppo la CPU?
E cosi' via
Credo che la difficolta' nell'impostare un tale tipo di ragionamento sia la stessa caratteristica che rende, ad un primo
approccio, facile la
programmazione in  VB cioe' la possibilita' di costruire programmi gestendo "solo" eventi e proprieta' degli oggetti.
Non che sia un male, anzi, ma se non cerco qualcosa di piu' "strutturato" finisco per scrivere programmi che si interessano solo
di impostare le caption e con routine molto elementari.
Spero di essere stato chiaro.
Ciao
Pasquale

 e	- Scusatemi per l'intrusione! -

 e      - Scusatemi per l'intrusione! -
Ciao "Paolos", sono Pasquale
Dunque:
- non so se il programma che sta sul SC sia il tuo, non l'ho scaricato anche se avevo intenzione di farlo
    per vedere l'impostazione di base, ma come ho detto in un messaggio precedente poichè programmo per diletto
    sarebbe stupido prendere di sana pianta il tuo codice e copiarlo nel mio progetto.
- Per il "mistero" del file "*.log" ecco l'arcano:
    per un prg. che calcola i costi avere un tale file (dove vengono memorizzate le coordinate delle precedenti connessioni) mi
sembra il minimo , altrimenti che     programma sarebbe?
per la denominazione *.log, ti do' ragione, può suscitare qualche dubbio, ma e' un'estensione molto comune per file che
contengono tali tipi
di informazioni:
Per esempio io chiamo *.log anche i file dove scrivo gli error.description che si verificano nei programmi a run time.
Spero di aver chiarito i tuoi dubbi..
Ciao Pasquale

chiamate"... Il mistero s'infittisce :-) )
eh eh eh...... ^___^ anch'io ho usato una soluzione simile....


E cosi' via
Il problema della CPU č piuttosto rilevante:
il programmino che ho fatto io, e che ho citato nell'altro post, purtroppo occupa CPU, perché ho usato un controllo
Timer ad intervalli piuttosto bassi, per poter offrire un aggiornamento veloce. Se aumenti gli intervalli, il programma
occupa meno CPU ma č meno preciso... potresti non usare il controllo Timer, e dorse e quello che farņ, ma devo fare
delle prove...


 (togliete "#" dall'indirizzo)
Al riguardo vorrei un consiglio ;
come comportarsi con la routine che gestisce lo scatto vero e proprio?, mi spiego meglio:
Ho sentito che le centraline telecom adottano un ritmo di conteggio indipendente dalla singola telefonata, cioč se inizia la
conversazione
appena la centralina ha fatto lo scatto e si termina prima dei 220 o 400 secondi, il costo e' di 200 lire.
Per cui convienere dividere l'intervallo della durata (220 o 400 sec.) e calcolare il costo ogni, diciamo 10 sec = 12,7 lire., in modo
tale che
nel medio periodo il programma dara' un stima piu' vicina al reale costo delle connessioni?



nel medio periodo il programma dara' un stima piu' vicina al reale costo delle connessioni?
Sì, ma solo per Telekom, visto il motivo di cui sopra, ma con altre connessioni (Infostrada, Wind, comunicazione
cellulare....)???
Il mio programma (daci un'occhiata) permette la configurazione indipendente di ogni singola connessione, adottando o il
sistema L/Scatto oppure L/Minuto, ed in questo caso il costo varia ogni secondo, percui il programma necessita di un
aggiornamento veloce...


 La Telekom non fraziona il costo di uno scatto....
C'e' da tenere presente una cosa: hai mai sentito parlare dello scatto
ciclico?
In pratica funziona cosi': nelle centraline della telecom c'e' un "disco
virtuale" che gira, ed ogni 3,40 minuti (facciamo solo l'esempio della
tariffa urbana all'ora di punta) fa partire lo scatto che ti viene
addebitato.
Pero' il "disco virtuale" non si mette a girare quando tu effettui la
chiamata, ma e' sempre in moto, cosicche' se sei fortunato il primo scatto
lo hai a 3,40 min. (in pratica la telefonata deve iniziare quando il disco
comincia il suo giro), altrimenti ti puoi ritrovare a pagare 2 scatti alla
risposta (quando il disco e' al termine del suo giro). Ovviamente non c'e'
nessun mezzo per sapere in che posizione e' il disco. Tutti gli altri scatti
pero' vengono addebitati normalmente.
Per la cronaca, ci sono diverse cause incombenti sulla Telecom per questo
fatto, che e' assimilabile al furto. Non so onestamente se le cose stiano
ancora cosi', la Telecom aveva promesso piu' volte di cambiare le cose.
Scusate se sono stato un po' (?) OT.
--
ciao
gelty
--
Visita 
http://www.sifor.it
Elimina *toglimi* per le risposte

Scusate se sono stato un po' (?) OT.
Se è vero quello che dici, beh.... grazie di avermi dato un motivo in più per odiare la TeleKom...... mi mancava
proprio...


 Elimina *toglimi* per le risposte
Era proprio cio' di cui stavo parlando ma non ero sicuro al 100% del meccanismo,
grazie gelty.
Per quando riguarda il programma famigerato di contascatti, conviene tenere
conto del "disco virtuale" con una media del
costo (e quindi secondo me una piu' corretta stima del costo nel medio periodo)
o no?.
Per MORENO:
Dove č il tuo programma?
Ciao Pasquale


Temporaneamente su:
http://www.geocities.com/SiliconValley/Bridge/1414/


 - Paolo Sabatino -