Newsgroup: it.comp.lang.visual-basic
Titolo: bug nell'errore

mi e' capitato di mettere nel lettore floppy un dischetto non formattato
il drivebox mi segnala l'errore periferica non disponibile come del resto
tutti i comandi del visual basic , mentre in gestione risorse mi dice che il
floppy non e' formattato , che e' cio' che vorrei fare io .  Ho cercato un
po'
nelle api ma non sono riuscito a trovare nulla per questa funzione ,  se
qualcuno ha un'aiuto da darmi sarei veramente felice . buon lavoro.

beh, basta intercettare l'errore di run-time di periferica non
disponibile.....
che mi pare tu abbia già fatto, e in quel caso proporre di formattare il
floppy....
non è difficile....
in realtà non esiste alcuna API (credo) che ti propone di formattare il
floppy, semplicemente Windows ti propone di farlo quando trova un floppy
rovinato o simili.....
good coding!!!!!!
--
Damiani Liborio Igor
idam...@hotmail.com
 - 
igor.d...@light.it
http://www.igordamiani.it
ICQ : 11847262

 ha scritto nel messaggio
news:9t2e8.10355$Ns4.4...@news2.tin.it...


Allaluiaaaaa ci sono riuscito ecco il codice:
Private Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal
lpPathName As String, ByVal iReadWrite As Long) As Long
Private Sub Command1_Click()
    hFile = lOpen("a:\", &H10)
    Errore = Err.LastDllError
    Select Case Errore
    Case 5
        MsgBox "Il floppy funziona"
    Case 21
        MsgBox "Il floppy non e' inserito"
    Case 31
        MsgBox "Il floppy non e' formattato"
    End Select
End Sub
mi sorge un dubbio pero' i numeri saranno validi anche su
altri computer ?
se qualcuno puo' controllare mi farebbe un enorme favore
ciao

 se qualcuno puo' controllare mi farebbe un enorme favore
Non c'è bisogno di controllare per i valori di ritorno, e poi, se ti viene
il dubbio basta verificare su MSDN alla voce _lopen!
Ciao

 altri computer ?
Tutti i manuali *SCONSIGLIANO* di usare le API 16bit per programmi 32
bit....
Fai cosě:
Private Function FloppyStatus() As Integer
    On Error GoTo ErrHandler            'per la gestione errori
    Open "a:\" For Binary As FreeFile   'Apre il floppy
    Close FreeFile                      'Lo chiude (non serve)
    Exit Function
ErrHandler:
    Select Case Err.Number
        Case 76: FloppyStatus = 0       'Floppy inserito e formattato
        Case 71: FloppyStatus = 1       'Floppy non inserito
        Case 52: FloppyStatus = 2       'Floppy non formattato
    End Select
End Function
Ciao
--
Timothy Redaelli
timothy(dot)redaelli(at)email(dot)it
-----------------------------------
Links:
Sito Comune: 
www.it-lang-vb.net
MSDN: 
msdn.microsoft.com

         Case 52: FloppyStatus = 2       'Floppy non formattato
  sul mio computer sono :
        Case 75: FloppyStatus = 0       'Floppy inserito e formattato
        Case 71: FloppyStatus = 1       'Floppy non inserito
        Case 57: FloppyStatus = 2       'Floppy non formattato
ahi ahi ahi non ci si puo' mai fidare di queste macchine
ciao

     End Select
Ma... allora cosa aveva provato supermariobros??? :)
P.S.: a questo punto mi farei anche un bell'enumeratore per i tre stati del
floppy anzhichè usare 0 (che poi di solito si usa per OK) 1, 2.
Ciao

 ha scritto nel messaggio
news:ch8e8.10273$_u5.3...@news1.tin.it...

Il problema è che col 2k da 76,71,52 mentre col 9x da 75,71,57
Bisognerebbe trovare qualcosa di un po' più portatile...


 ha scritto nel messaggio
news:kc8e8.17412$v7.6...@twister1.libero.it...

Forse dipende da come hai fatto l'accesso al disco o dal fatto che hai usato
un dischetto rovinato.
Prova nella fin. di debug a scrivere
error 71 ' Disco non pronto
error 75 ' Errore di accesso al percorso
error 57 ' Errore di I/O periferica (che italiano!)
error 76 ' Impossibile trovare il percorso
error 52 ' Nome o numero di file non valido
Gli errori di VB non cambiano da PC a PC, inoltre se non sei sicuro puoi
usare una sintassi tipo
Case 57, 52 '(in effetti mi sembra strano che si abbia un 52...)
    ' Proviamo a formattare!
Ciao

 ha scritto nel messaggio
news:kc8e8.17412$v7.6...@twister1.libero.it...

Attento perche' c'e' un errore nell'esempio di Timothy
Open "a:\" For Binary As FreeFile
Close FreeFile
Questo non va bene, perche' freefile serve proprio a restituire il primo
numero di file valido, quindi se la prima istruzione restituisce 1, la
seconda restituisce 2 (il file e' ancora aperto) e quindi stai chiudendo un
file mai aperto... freefile va usato per valorizzare una variabile prima di
aprire il file.
nel primo esempio potrebbe essere generato un errore che non ha a che fare
con lo stato del floppy, tanto e' vero che 52 corrisponde a "Bad file name
or number" mentre 57 e' correttamente "Device I/O error"...
e' un errore un po' subdolo, perche' visto lo scopo della funzione e
l'ordine dei "case" e' facile che non passi mai dal "case 52"...
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 ha scritto nel messaggio
news:kc8e8.17412$v7.6...@twister1.libero.it...

Ho trovato l'inghippo:
Err.Number=52 lo dà se metti un floppy NON win compatibile (amiga,linux)
Err.Number=57 lo dà se metti un floppy VUOTO
Err.Number=76 e 75 li dà rispettivamente con wNT/2k/xp e w9x.
Quindi:
Private Enum FloppyStatusConst
    Inserito
    NonInserito
    NonFormattato
End Enum
Private Function FloppyStatus() As FloppyStatusConst
    On Error GoTo ErrHandler            'per la gestione errori
    Open "a:\" For Binary As FreeFile   'Apre il floppy
    Close FreeFile                      'Lo chiude (non serve)
    Exit Function
ErrHandler:
    MsgBox Err.Number
    Select Case Err.Number
        Case 75, 76: FloppyStatus = Inserito      'Floppy inserito e
formattato
        Case 71: FloppyStatus = NonInserito       'Floppy non inserito
        Case 57, 52: FloppyStatus = NonFormattato 'Floppy non formattato
    End Select
End Function
Private Sub Form_Load()
    Select Case FloppyStatus
        Case Inserito: MsgBox "Inserito"
        Case NonInserito: MsgBox "Non Inserito"
        Case NonFormattato: MsgBox "Non Formattato"
    End Select
End Sub

grazie a tutti
all'origine il problema era nato dal fatto che io usavo
il drivelistbox e l'errore che da e' sempre "periferica non disponibile"
sia che manchi il floppy o che non sia formattato
ciao