Differenze tra le versioni di "Percorso assoluto e percorso relativo dei file"

Da Gambas-it.org - Wikipedia.
 
Riga 38: Riga 38:
  
  
Ora che abbiamo compreso cosa sono i percorsi occorre tenerne ben conto nel nostro progetto Gambas e fare in modo che i percorsi che sul nostro computer funzionano bene possano funzionare altrettanto bene sul computer del nostro utente.
+
Ora che abbiamo chiarito cosa sono i percorsi occorre tenerne ben conto nel nostro progetto Gambas e fare in modo che i percorsi che sul nostro computer funzionano bene possano funzionare altrettanto bene sul computer del nostro utente.
  
Purtroppo Gambas non riconosce i percorsi relativi, per lui i percorsi senza slash(/) o senza tilde (~) puntano al progetto e basta.
+
In Gambas riguardo al percorso relativo non vi è neanche la necessità di mettere il punto se noi scriviamo ''pippo.txt'' Gambas lo cerca all'interno della directory del progetto.
  
Ma noi non possiamo lasciare nel progetto i nostri documenti tipo database, pagine web ecc. perché una volta compilato il progetto diventerebbero di sola lettura e quindi inutilizzabili.
+
Qui occorre mettere in chiaro che il concetto di ''directory di progetto'' esiste solo nella nostra IDE, una volta che creiamo l'eseguibile tale concetto svanisce.
 +
Per esempio se noi usiamo ''Application.Path'' per indirizzare a ''pippo.txt'' una volta creato l'eseguibile tale percorso non indirizzerebbe più a nulla.
  
Fortunatamente per noi ci vengono incontro le classi: User.Home e Application.Name.
+
Ma, come detto, se usiamo il percorso relativo possiamo tranquillamente accedere a ''pippo.txt''.
 +
Però qui entra in gioco un altro importante concetto: i nostri file all'interno del progetto al momento della creazione dell'eseguibile diventano di sola lettura e pertanto per la maggior parte inutilizzabili.
  
Chiaramente un percorso ''/home/gian/Documenti/Test/Doc1'' non potrà funzionare sul computer del nostro utente Andrea, pertanto dovremmo fare in modo che quando lui aprirà per la prima volta l’applicativo esso creerà una directory denominata con Application.Name nel suo User.Home e vi copierà tutti i dati utili.
+
Fortunatamente per noi ci vengono incontro le classi: ''User'' e ''Application'' con le rispettive proprietà ''Home'' e ''Name''.
  
Naturalmente si può fare in modo più articolato ma questo è tanto per capirci.
+
Chiaramente un percorso ''/home/gian/Documenti/Test/Doc1'' non può funzionare sul computer del nostro utente ''Andrea'', pertanto dobbiamo fare in modo che quando lui apre per la prima volta il nostro applicativo esso crei una directory denominata ''Application.Name'' nel suo ''User.Home'' e vi copi tutti i file manipolabili.
  
Senza dilungarci troppo occorre che noi pensiamo bene a come saranno copiati e letti gli eventuali percorsi all’interno della directory creata.
+
Naturalmente si può fare in modo più articolato, ma questo è tanto per spiegare.
  
Nota: ''User.Home &/ Application.Name''  è un percorso assoluto esattamente come lo sono ''/home/NomeUtente/NomeApplicazione'' o come ''~/NomeApplicazione''.
+
Senza dilungarci oltre occorre che noi pensiamo bene a come saranno copiati e letti gli eventuali percorsi all’interno della directory creata.
  
 +
Nota: ''User.Home &/ Application.Name'' ha la stessa valenza di un percorso assoluto esattamente come ''/home/NomeUtente/NomeApplicazione'' o come ''~/NomeApplicazione''.
  
  
 
=''Percorso Assoluto'' e ''Pecorso Relativo'' nella documentazione ufficiale di Gambas=
 
=''Percorso Assoluto'' e ''Pecorso Relativo'' nella documentazione ufficiale di Gambas=
 
La documentazione ufficiale di [[GAMBAS|Gambas]] precisa che vi sono, appunto, due tipi di percorso di un file:
 
La documentazione ufficiale di [[GAMBAS|Gambas]] precisa che vi sono, appunto, due tipi di percorso di un file:
* Percorso Assoluto;
+
* Percorsi Assoluti;
* Percorso Relativo.
+
* Percorsi Relativi.
  
  
Rinviamo direttamente alla [http://gambaswiki.org/wiki/cat/path pagina della documentazione] di Gambas relativa a questo argomento.
+
Rinviamo direttamente alla [http://gambaswiki.org/wiki/cat/path?l=it pagina della documentazione] di Gambas relativa a questo argomento.
  
  

Versione attuale delle 08:52, 3 apr 2019

Introduzione

Di per sé comprendere la differenza che c’è fra un percorso assoluto e un percorso relativo non è particolarmente difficile. [ nota 1 ]


Il percorso assoluto è quello che parte dalla directory root (/) di linux e si snoda attraverso il filesystem.

Esempio di percorso assoluto:

/home/gian/Documenti/Test/Doc1


Il percorso relativo è invece quello che parte dalla directory in cui ci troviamo (relativamente ad essa per l’appunto) e sale o scende lungo il filesystem.

Esempio di percorso relativo:

./ (dot + slash)


Infatti schematizzando il filesystem di Linux possiamo paragonarlo a un albero rovesciato che dalla sua base o radice parte con root (/) e si dirama verso bin/, dev/, etc/, home/ ecc.

Diagrammaa.png


In sostanza se un percorso inizia con lo slash (/) è assoluto, se inizia con dot (.) è relativo.

Un solo punto significa directory corrente (./), con i due punti (../) si sale di una directory e proseguendo via via ../../ si sale di due ecc.

Diagrammab.png


Finora ci siamo mossi linearmente ma come sappiamo i percorsi si possono fare alquanto tortuosi ad esempio potremmo doverci muovere da una directory ad un’altra che si trova allo stesso nostro livello o anche più basso ma che si dirama da altra directory; basta salire con il doppio punto (../) e spostarsi e/o scendere con slash (/).

Se ad esempio dal terminale volessimo raggiungere la directory Pippo per accedere al documento in esso contenuto e ci trovassimo in Doc1 dovremmo scrivere ../ per raggiungere Test quindi Doc2/ e Pippo/Documento di Pippo.

Questo il comando:

(editor di testo) ../Doc2/Pippo/Documento.txt 

Nel mio caso:

~/Documenti/Test/Doc1$ gedit ../Doc2/Pippo/Documento.txt


Ora che abbiamo chiarito cosa sono i percorsi occorre tenerne ben conto nel nostro progetto Gambas e fare in modo che i percorsi che sul nostro computer funzionano bene possano funzionare altrettanto bene sul computer del nostro utente.

In Gambas riguardo al percorso relativo non vi è neanche la necessità di mettere il punto se noi scriviamo pippo.txt Gambas lo cerca all'interno della directory del progetto.

Qui occorre mettere in chiaro che il concetto di directory di progetto esiste solo nella nostra IDE, una volta che creiamo l'eseguibile tale concetto svanisce. Per esempio se noi usiamo Application.Path per indirizzare a pippo.txt una volta creato l'eseguibile tale percorso non indirizzerebbe più a nulla.

Ma, come detto, se usiamo il percorso relativo possiamo tranquillamente accedere a pippo.txt. Però qui entra in gioco un altro importante concetto: i nostri file all'interno del progetto al momento della creazione dell'eseguibile diventano di sola lettura e pertanto per la maggior parte inutilizzabili.

Fortunatamente per noi ci vengono incontro le classi: User e Application con le rispettive proprietà Home e Name.

Chiaramente un percorso /home/gian/Documenti/Test/Doc1 non può funzionare sul computer del nostro utente Andrea, pertanto dobbiamo fare in modo che quando lui apre per la prima volta il nostro applicativo esso crei una directory denominata Application.Name nel suo User.Home e vi copi tutti i file manipolabili.

Naturalmente si può fare in modo più articolato, ma questo è tanto per spiegare.

Senza dilungarci oltre occorre che noi pensiamo bene a come saranno copiati e letti gli eventuali percorsi all’interno della directory creata.

Nota: User.Home &/ Application.Name ha la stessa valenza di un percorso assoluto esattamente come /home/NomeUtente/NomeApplicazione o come ~/NomeApplicazione.


Percorso Assoluto e Pecorso Relativo nella documentazione ufficiale di Gambas

La documentazione ufficiale di Gambas precisa che vi sono, appunto, due tipi di percorso di un file:

  • Percorsi Assoluti;
  • Percorsi Relativi.


Rinviamo direttamente alla pagina della documentazione di Gambas relativa a questo argomento.



Note

[1] Il testo dell'introduzione alla presente pagina è a cura dell'iscritto Gianluigi del forum www.gambas-it.org .