Newsgroup: it.comp.lang.visual-basic
Titolo: Run-time error 13

Ciao,
ho creato un programmino, funziona tutto se lo avvio da Visual Basic, mentre
se compilo il .exe mi dà un type mismatch  run-time error 13! Cosa può
essere?....ho notato che succede se non trova un file da aprire nel
codice...il fatto è che se questo non esiste non lo dovrebbe aprire e andare
avanti...cosa che fà in visual basic ma non quando creo l'exe!
Ciao
Alessandro

 avanti...cosa che fà in visual basic ma non quando creo l'exe!
da questa distanza è un po' difficile capire che cosa succede, senza vedere un po' di
codice... sostanzialmente il comportamento del programma in fase di debug e di quello
compilato è lo stesso...
(bonk!) (rumore di sassi scagliati in direzione del sottoscritto da parte di tutti coloro
che sono impazziti a causa di programmi che funzionano all'interno dell'ide ma si piantano
una volta compilati)
ehi.. calma... intendevo dire che "di solito", per le cose "semplici", le cose stanno
così...
tornando al problema di magobin, possibili soluzioni:
1) postare un pezzetto del cosdice che si suppone causa dell'errore
2) infarcire il codice di msgbox a scopo di debug per vedere che cosa succede nell'exe
Salutoni
Sergio

inizia con uno splash, dopo un conteggio carica una form e controlla se
esiste un file se non lo trova carica un'altra form (quella principale) e
notifica di non aver trovato utenti(nomi contenuti nel file), quindi
dovrebbe lanciare un'imputbox ma mi dà l'errore in oggetto: un pò di
codice...ritengo che il problema sia tutto qui!
SPLASH:
Option Explicit
Dim i As Integer
Private Sub Form_Load()
    Dim i As Integer
    i = 1
End Sub
Private Sub Timer1_Timer()
i = i + 1
If i = 3 Then
Unload Me
Load utenti
End If
End Sub
UTENTI:
Call Rimuovi_X(Me.hWnd)
 stec$ = ".steccone4"
a$ = ""
b$ = ""
c$ = ""
d$ = ""
e$ = ""
On Error Resume Next
Open "check_utenti" For Input As #1
Input #1, a$
Input #1, b$
Input #1, c$
Input #1, d$
Input #1, e$
If a$ = "" Then
GoTo indirizzamento
Else
Option1.Caption = a$
utenti.Visible = True
Option1.Enabled = True
End If
indirizzamento:
If a$ <> "" Then
utenti.Visible = True
Form1.Visible = False
Option1.Caption = a$
Exit Sub
Else
Form1.Show
End If
FORM1:
Private Sub Form_Load()
Call Rimuovi_X(Me.hWnd)
file_utente$ = utenti.utente + utenti.stec
On Error GoTo indirizzamento
Open "check_utenti" For Input As #1
Input #1, a$
indirizzamento:
Close #1
If a$ = "" Then
'Non ci sono valori salvati, quindi via con il default !
MsgBox "Il programma non ha trovato nessun utente configurato!", vbOKOnly +
vbExclamation, "Check utente"
MESSAGGIO:
utente1$ = InputBox("Inserisci il tuo nome!", "Inserimento utente")
utente1$ = LCase(utente1$)
If utente1$ = "" Then
MsgBox "Non hai inserito nessun utente !", vbCritical, "ATTENZIONE"
GoTo MESSAGGIO
End If
........
end sub

 end sub
cosě a occhio ritengo che il problema si verifichi nella routine load della form1, in
sostanza c'č l'errore sull'open del file, quindi salti alla riga indirizzamento solo che a
questo punto non sei piů protetto dal resume, e quindi l'errore di run time ti blocca
l'esecuzione, ma:
1) questa cosa dovrebbe accadere anche nell'ide
2) spero che questo codice sia stato scritto in fretta all'esclusivo scopo di postarlo, e
non costituisca uno snip della tua applicazione, perchč, imho, č scritto da cani e non
funziona neanche a prenderlo a calci
Salutoni
Sergio

 funziona neanche a prenderlo a calci
si è fatto al volo!
Non riesco a venirne fuori però !
Ciao
Alessandro

 si è fatto al volo!
egregio dottor magobin, come pretendi che si possa trovare l'errore in un codice scritto
da te, se poi posti un codice diverso?
Suggerisco: infarcisci il codice di msgbox ( o altra cosa a tua scelta) per individuare
con sicurezza quale sia la riga del codice che causa l'errore, poi invia tutto il codice
della sub/function in cui si verifica l'errore, indicando ovviamente qual è la riga, poi
vedremo che cosa si riesce a fare.
Salutoni
Sergio

 end sub
Wow, ci siamo arrivati... senti per favore, visto che questo l'hai
scritto di fretta, perché non ci posti lo snip della tua applicazione,
così cerchiamo di dare un senso a questa cosa?
Ciao
Andrea

allora...premetto che comunque sono proprio agli inizi, e il codice è
SICURAMENTE scritto con i PIEDI...l'unica cosa è che sull'IDE tutto funge,
mentre se compilato no....
Purtroppo non posso postare sul newsgroup tutto il codice delle varie
form...è troppo!
Se riesci a darmi una mano ti posto in forma privata il codice!...vedrai che
sull'ide funzionerà...mentre se compilato no....se magari con una piccola
modifica si riesce a venirne fuori nè sarei felice!
Dimmi se ti posso postare  il codice!...
Ciao
Alessandro

 form...è troppo!
ripeto: individua, in un modo a tua scelta, la riga che dà problemi, poi invia solo quella
sub.
Salutoni
Sergio


Ci ho provato ...son 3 giorni che smanetto con msgbox ecc...ma non ne vengo
fuori...anche perchè l'errore me lo dà solo quando compilo e non
sull'ide!...sicuramente l'errore è nel load della form nel momento in cui
apre il file, dico così perchè se creo il file e il programma lo
trova...funziona correttamente...
Ciao
Alessandro


Vai nelle opzioni di debug di VB e controlla che nella scheda Generale 
sia selezionato "Interrompi ad ogni errore"
Prova a rieseguire il tuo codice nell'IDE e vedi se si genera l'errore ...
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

 ha scritto nel messaggio
news:XjWQ9.47373$Q%4.15...@news1.tin.it...

Giusto per dare un punto di partenza:
Scommetto che quelle Rimuovi_X(<handle>) sono chiamate a funzioni dell'API
per nascondere il tasto di chiusura della finestra... sbaglio?
Ecco, se sei agli inizi e ti ritrovi un problema del genere, per prima cosa
togli le cose "strane"... commenta tutto il corpo di quella funzione, in
modo che non faccia assolutamente nulla, e riprova.
Ora, di per se' non dovrebbe entrare nulla con un errore di type mismatch,
pero' quando si cominciano a notare comportamenti differenti tra IDE e
compilato,  e' meglio,ripeto, cominciare a tracciare le cose piu'
"esotiche", tipo API che smanettano sugli handle di finestra
Poi, en passant, cerca di riorganizzare il codice senza tutti quei GOTO,
perche' altrimenti diventa davvero un inferno da debuggare
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown


Si ora lo genera......strano però che non me lo vedesse prima...comunque
l'errore era che ad un campo data non gli passava un numero ma una lettera
(errore mio)
Grazie comunque a tutti
Ciao
Alessandro

 (errore mio)
Infatti è strano perchè l'exe si comporta come "interrompi ad ogni errore
non gestito" (secondo logica: se l'errore è gestito cosa ti interrompi a
fare?)
Sicuro che sia _solo_ quello?
Comunque per individuare righe colpevoli di comportamenti strani basta
adottare il "commento dicotomico" :)
Commenti una metà del codice, se non va in err. il prob sta nella metà
commentata, altrimenti è ovviamente nella metà corretta.
Continui con questo schema solo sulla metà corretta finchè non ti rimane una
sola linea :)
Ovviamente non è sempre possibile applicare questo sistema (perlomeno non in
modo lineare) ma può sempre tornare utile :P
Ciao


Si...PER FORTUNA è il solo errore che ho riscontrato, ora ho dato il
programma compilato ad un amico per testarlo...sono 2 giorni che prova a
trovare errori ma ancora regge :-)
Ciao
Alessandro


No č giusto,  funziona correttamente
Ho risolto comunque...era un valore passato ad una data, solo che gli
passava un label :-)
In effetti č ora che mi metta a studiare meglio .....il fatto č che questa č
stata la prima applicazione che ho fatto....e con il tempo (sono giunto alla
versione 4) ho aggiunto codice non preoccupandomi di migliorarlo....ci sono
cose che ora non farei piů, tipo tutti i GOTO, infatti il debug č
mostruoso..ci sono centinaia di IF annidati
Grazie cmq per i consigli!
Ciao
Alessandro

 avanti...cosa che fą in visual basic ma non quando creo l'exe!
Una volta ho avuto questo problema perché nell'IDE e nel compilato le
funzioni di conversione implicite tra Boolean e String si comportano in modo
diverso. Mi spiego: se scrivo un Boolean = True su un file dall'IDE scrive
"Vero", dal compilato "True". Quando poi vado a leggere dal compilato il
"Vero" scritto dall'IDE, non riesce a convertire "Vero" in Boolean perché si
aspetta "True" o "False" e provoca l'errore di cui sopra.
Nel tuo codice non ho trovato nulla ma, come suggeriscono gli altri,
dovresti infarcirlo di MsgBox per capire qual č la riga che provoca
l'errore.
Ignazio

 codice...il fatto č che se questo non esiste non lo dovrebbe aprire e
andare
