Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    indirizzi file

    Ciao a tutti,
    sono nuovo del forum e ho bisogno di un consiglio riguardo alla gestione degli indirizzi dei file in un piccolo programma scritto con VB .NET. Per l'università mi sto cimentando nella programmazione di una macro per il programma Solid Edge (programma di modellazione 3D, studio ing. meccanica) e vorrei raggiungere il seguente obiettivo: la mia macro deve accedere a file di diverso tipo (.xls, .par, .asm, etc) e tutti questi file si trovano in una cartella (che possiamo chiamare "pippo") in posizioni differenti; anche l'exe della macro e tutti i file generati durante la sua compilazione si trovano nella stessa cartella con i rispettivi indirizzi. Io vorrei fare in modo che la mia macro risulti funzionante anche su altri pc, o semplicemente anche sullo stesso una volta che sposto la cartella "pippo" dalla posizione attuale (il desktop) in un'altra posizione; per questo motivo si trova tutto in un unica cartella, in modo che si debba spostare solo quella, ma la struttura dei file non cambi.
    Il problema è che nel codice della mia macro ho utilizzato gli indirizzi dei singoli file (ad esempio "C:/Users/user/desktop/pippo/file1.xls") e dunque, se io sposto la cartella "pippo" su un altro pc o semplicemente in una destinazione diversa del mio, ottengo ovviamente degli errori perchè il programma nn trova più tutti i file che sono necessari al suo svolgimento. In che modo potrei rendere i miei indirizzi "dinamici"? Intendo dire: in che modo potrei al programma che dalla cartella "pippo" in poi la struttura dei file è sempre la stessa, ma che la cartella "pippo" è stata spostata!?
    Pensavo di ricorrere all'istruzione:
    codice:
    My.Application.Info.DirectoryPath
    che mi restituisce una stringa contenente l'indirizzo dell'exe della mia macro, ma poi nn so cosa farmene. Il punto è che l'exe della mia macro ha il seguente indirizzo: "C:/Users/user/desktop/pippo/macro/nomemacro/bin/debug/macro.exe" (in alternativa, quando avrò la versione definitiva nn sarà più nella cartella debug ma in quella release, ma la struttura saraà la stessa); a me basterebbe dire in qualche modo al programma di fermarsi a pippo, quindi a "C:/Users/user/desktop/pippo", e poi, tramite il comando:
    codice:
    Path.Combine()
    unire questa parte di indirizzo a quella fissa del file che mi interessa.
    So di non esser stato molto chiaro, quindi per qualunque chiarimento chiedetemi pure; qualcuno sarebbe comunque in grado di darmi una mano o qualunque suggerimento utile per raggiungere il mio obiettivo? Questa è solo la soluzione a cui avevo pensato io, ma qualunque altra soluzione funzionante mi andrebbe bene e immagino ne esistano.
    Grazie a tutti per le risposte che mi darete!

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Per i percorsi di sistema (come ad esempio il Desktop) devi usare le SpecialFolders
    Controlla sulla guida, trovi tutte le informazioni.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Originariamente inviato da guido.bonalumi
    indirizzi file
    Il titolo era insufficiente: la descrizione era inappropriata e il linguaggio mancante.

    Dato che sei nuovo, leggi il Regolamento di quest'area per conoscere le regole da seguire in futuro.

    Qui ho provveduto io a correggere per fornire un esempio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Ok... innanzitutto mi scuso per il mio linguaggio scarsamente tecnico. A mia discolpa posso solo dire che, studiando tutt'altro (ing. meccanica come ho detto prima), di programmazione ne so veramente poco e dunque non conosco nemmeno un linguaggio adeguato. Detto questo vi chiedo anche di essere il più dettagliati possibile nelle spiegazioni, in modo da evitare continue mie richieste di chiarimento, dovute appunto alla mia ignoranza in materia.
    Tornando al mio problema, proverò a documentarmi riguardo la soluzione proposta da 'gibra' (le SpecialFolders), ma vi sottopongo lo stesso la soluzione che ho ideato io ieri, in modo che possiate darmi un parere:
    codice:
    #If DEBUG Then
             Dim AppAddress As String = Path.Combine("\Macro", My.Application.Info.AssemblyName, "bin\Debug") 
    #Else
             Dim AppAddress As String = Path.Combine("\Macro", My.Application.Info.AssemblyName, "bin\Release") 
    #End If
             AppAddress = Left(My.Application.Info.DirectoryPath, Len(My.Application.Info.DirectoryPath) - Len(AppAddress))
    Ho pensato di utilizzare un collegamento all'exe, che andrò a mettere nella cartella pippo, la quale conterrà tutti i file e le cartelle necessarie allo svolgimento della mia macro; questo perchè altrimenti, se mi limitassi a spostare il file .exe dalla cartella bin\Debug (o bin\Release, nel caso della versione definitiva) nella cartella principale pippo i collegamenti i file che ho creato durante la fase di debug non funzionerebbero più.
    In sostanza quello che ho fatto è stato creare una variabile (AppAddress) di tipo stringa che viene inizializzata con uno dei 2 valori possibili nel primo If e, in seguito, assume il valore restituito da:
    codice:
    Left(My.Application.Info.DirectoryPath, Len(My.Application.Info.DirectoryPath) - Len(AppAddress))
    cioè l'indirizzo dell'.exe aperto dal mio collegamento, a cui viene sottratta la parte relativa alla cartella in cui si trova all'interno di pippo (macro\nomemacro\bin\debug oppure macro\nomemacro\bin\release, a seconda della modalità in cui ci si trova). Otterrò quindi un indirizzo tipo: C:\users\user\desktop\pippo.
    A questo punto quindi è sufficiente definire gli indirizzi di tutti i file che dovrò utilizzare come: AppAddress + "indirizzo file in pippo".
    E' una soluzione macchinosa, ma purtroppo è l'unica che mi è venuta in mente e quindi vi chiedo un parere.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.