Newsgroup: it.comp.lang.visual-basic
Titolo: COME SCOPRIRE L'ESTENSIONE

Ciao a tutti qual è il modo migliore per scoprire l'estensione di un file
inserito in un filebox?
Grazie a tutti
jax...@yahoo.com

...



E se l'estensione del file e' minore di 3 caratteri?
Secondo me e' meglio cercare l'ultimo punto (.) e prendere i rimanenti
caratteri della stringa (si', e' vero, viene piu' lungo in codice, ma e'
piu' sicuro).
--
Roal Zanazzi
z...@iol.it

Concordo con Roal.
Io utilizzo questa funzione per ricavare l'estensione (quella dos: . più
1,2 o 3 caratteri)
Public Function Estensione(ByVal NomeFile As String) As String
'*************************************************************
'Ricava l'estensione dal nome del file passato
Dim Indice As Integer       'Puntatore di scorrimento della nome
Dim Fine as boolean	    'Flag, indica quando ho trovato un'estensione
valida
 
    Indice = Len(NomeFile)  'Scorro il nome carattere per carattere da
destra verso 				sinistra
 
    Estensione = ""
    Fine = False
 
    Do (While Indice >= 1) And Not Fine    'Termino quando è finita la
stringa
 
        If Mid(NomeFile, Indice, 1) = "." And (Len(NomeFile) - Indice) <
4 Then 'Ho 									trovato un'estensione valida ".???" ".??" ".?"
 
            Estensione = Right(NomeFile, (Len(NomeFile) - Indice))
                                'Ricavo l'estensione del file
            Fine = True         'Ricerca terminata
 
        End If
 
        Indice = Indice - 1     'Carattere successivo
 
    Loop
End Function
Ciao
:-) Hd (-:
p_di...@freemail.it
  (okkio, non è politico ^_^)
hd...@azienda.net
Sito Comune:
www.murialdo.it
\it_lang_vb

Hai ragione.
Allora:
'Funzione che restituisce le esensioni di tutti i file
dim a$(flBox.listcount-1)
For t=0 to flBox.listcount -1
   For y=1 to len(flBox.list(t))
       punto$=mid$(flBox.list(t),y,1)
       if punto$="." then goto Continua
   next y
Continua:
   if y=len(flBox.list(t)) then
                                      a$(t)=""
                                else
a$(t)=mid$(flBox.List(t),y+1,len(flBox.list(t))-y)
  endif
next t
'Funzione che restituisce l'estensione del file selezionato
selez$=flBox.list(flBox.listindex)
for y=1 to len selez$
  punto$=mid$(selez$,y,1)
  if punto$="." then goto Continua
next y
Continua:
if y=len(selez$) then
                             b$=""    'Il file non ha estensione
                        else
                             b$=mid$(selez$,y+1,len(selez$)-y)  'Estensione
del file
endif

Scusa se mi intrometto ma non sarebbe più logico e anche più veloce usare
'INSTR'
invece di mid ?
Ciao
Daniele
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
---------------------------------------------------------------------------


in pratica la funzione è questa
private function GetExt(Filename as string) as string
    dim pointer as int
    pointer=instrrev(filename,".")
    GetExt=mid(filename,pointer+1) 'leva il +1 se vuoi includere il punto
end function
Byez
Cornova

Scusa se mi intrometto ma non sarebbe piů logico e anche piů veloce usare


Eheheheh
Ho un codice fatto proprio per te! 
Spero che sia quello che volevi tu.......
Dim ndx as long 
Dim Strtitolo as string
Dim estensione as string
strtitolo = ' questa variabile contiene il nome del file
ndx=InStr(1,strtitolo,".")
 if ndx=0 then
     'il file non ha estensione
 else
     Estensione=Mid$(strtitolo,ndx+1)
endif
ByeZ!
Alkondor

 wrote in message 37ad8a1e...@news.tin.it...


 Domenico
Sģ, ma solo in VB6...
Altrimenti č meglio cercare "a mano" il punto con un ciclo a ritroso e Mid$. Nel
caso di un path completo si puņ spulciare all'indietro il nome file, fino al
primo "\" o ":" o inizio stringa. Nel caso non si trovino punti prima di
arrivare a un "\", vorrą dire che l'estensione non c'č.
L'esempio funziona con tutte le combinazioni.
es: "C:\File", "C:\File.d", "C:\File.doc", "C:\File.d.e.doc", "C:\File.d.d\F.d",
"File", File.barbera.doc"
Private Function Ext(Byval sPathName As String) As String
    Dim ptr As Integer
    Dim sPathName As String
    Dim sExt As String
    sExt = vbNullString ' oppure "", ma si puņ anche commentare via.
    ptr = Len(sPathName)
    Do While (ptr > 0)
        If InStr(1, "\:.", Mid$(sPathName, ptr, 1)) Then Exit Do
        ptr = ptr - 1
    Loop
    If ptr Then 'necessario per evitare un Mid$ con posizione=0, che genera
errore
        If Mid$(sPathName, ptr, 1) = "." Then
             ' togliere +1 per ottenere il punto, ma conviene  aggiungerlo se
necessario.
            sExt = Mid$(sPathName, ptr + 1)
        End If '*
    End If '*
    '* evito gli Else sExt = "", poiché sExt č gią inizializzata come ""
    Ext = sExt
End Sub
Ciao
Flavio Ronco
--
f.ronco@*NonMiServeNiente*
flashnet.it
http://www.metabrains.com
  [Under Construction]
-------------------------------------------------------------
"Che pubblico in gamba! Se ci dite dove lavorate,
domani mattina se abbiamo tempo vi veniamo a vedere"
[Paolo Rossi]

 nomi di file come "Mio.file.doc", in cui l'estensione è doc...
Che siano tutte queste 'permissioni' che rendono Windows affidabile come
l'Apollo 13 ? :-(
