• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

Leggere .path

ale

Utente Junior
Professione: tecnico
Software: office+autocad
Regione: Veneto
#1
con autocad 2006 sto cercando di inventarmi un metodo per rintracciare i file all’ interno di una directory.
le procedure sottoriportate sono un frammento della routine che cerco di sviluppare, non riesco a capire perché se digito il nome della directory la routine id_1 funziona, mentre se richiamo il percorso nella routine, id_2 non funziona.:confused:
Qualcuno mi può aiutare ?

Public Function j(n As String) As String

Select Case n
Case "a": j = "0"
Case "l" : j = "1"
Case "e": j = "2"
End Select
End Function


Public Sub id_1()
Dim str As String
Dim percorso As String

Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String

str = "c:\alex"

a1 = Mid((str), 4, 1)
a2 = Mid((str), 5, 1)
a3 = Mid((str), 6, 1)
a4 = Mid((str), 7, 1)


x1 = j(a1)
x2 = j(a2)
x3 = j(a3)
x4 = j(a4)

Debug.Print x1 & x2 & x3 & x4
End Sub


Public Sub id_2()
Dim str As String
Dim percorso As String

Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String

percorso = ThisDrawing.Path
str = percorso

a1 = Mid((str), 4, 1)
a2 = Mid((str), 5, 1)
a3 = Mid((str), 6, 1)
a4 = Mid((str), 7, 1)


x1 = j(a1)
x2 = j(a2)
x3 = j(a3)
x4 = j(a4)

Debug.Print x1 & x2 & x3 & x4
End Sub
 

Shape

Utente Senior
Professione: Disegnatore Carpenteria
Software: Autocad, VBA-AutoLisp, Tecnometal4D, GIMP
Regione: Friuli
#2
Allora il problema è nel Select Case

Public Sub id_2()
Dim str As String
Dim percorso As String

Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String

percorso = ThisDrawing.Path
MsgBox (percorso)
str = percorso

a1 = Mid((str), 4, 1)
a2 = Mid((str), 5, 1)
a3 = Mid((str), 6, 1)
a4 = Mid((str), 7, 1)

Debug.Print a1 & a2 & a3 & a4

End Sub

Public Sub id_1()
Dim str As String
Dim percorso As String

Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String

str = "c:\alex"

a1 = Mid((str), 4, 1)
a2 = Mid((str), 5, 1)
a3 = Mid((str), 6, 1)
a4 = Mid((str), 7, 1)

Debug.Print a1 & a2 & a3 & a4
End Sub

queste due sub funzionano correttamente...

il problema è nel J non capisco cosa tu voglia fare... ma scritto così non funziona

se non gli passi "n" come fa a valutare il case..
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, GstarCAD, CadWorx, Excel, Lisp, VBA
Regione: Sicilia
#3
Public Sub id_2()
Dim str As String
Dim percorso As String

Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String

percorso = ThisDrawing.Path
str = percorso

a1 = Mid((str), 4, 1)
a2 = Mid((str), 5, 1)
a3 = Mid((str), 6, 1)
a4 = Mid((str), 7, 1)


x1 = j(a1)
x2 = j(a2)
x3 = j(a3)
x4 = j(a4)

Debug.Print x1 & x2 & x3 & x4
End Sub
Ma la variabile percorso, contiene lo stesso identico contenuto, cioè c:\alex o piuttosto C:\ALEX?

Non vorrei che fosse solo un problema di maiuscole/minuscole.

Comunque, la funzione

Public Function j(n As String) As String
Select Case n
Case "a": j = "0"
Case "l" : j = "1"
Case "e": j = "2"
End Select
End Function

la trasformerei in
Public Function j(n As String) As String
Select Case ucase(n)
Case "A": j = "0"
Case "I" : j = "1"
Case "E": j = "2"
End Select
End Function

ciao
 

ale

Utente Junior
Professione: tecnico
Software: office+autocad
Regione: Veneto
#4
grazie shape, grazie rpor66, vi ritrovo con piacere. :)

il problema è nel J non capisco cosa tu voglia fare... ma scritto così non funziona
non potevo scrivere tutta la routine, sarebbe stata troppo lunga, Function J, dovrebbe, secondo le mie rudimentali conoscenze, modificare la lettera dell' alfabeto in un numero; id_1 riesce a trasformare nel debug le lettere una ad una dopo il c:\ nel corrispettivo numero della function j.
id_2 speravo che mi evitasse di trascrivere ogni volta il percorso della directory.

provo con autocad le vostre indicazioni, e vi faccio sapere; l' obiettivo finale sarebbe quello di indicare nel disegno un codice identificativo estrapolato dalla directory dove è registrato il file.
es. il disegno che riporta il numero 012, e nella directori c:\ale.
 

ale

Utente Junior
Professione: tecnico
Software: office+autocad
Regione: Veneto
#6
ho provato ad applicare "msgbox" e il problema che avevo è stato superato, non mi ero accorto che alcune maiuscole che apparivano nel .path, non venivano lette, "ucase" ha corretto anche questa mancanza.

direi che il "case" è risolto :)
 
Ultima modifica: