Newsgroup: it.comp.lang.delphi
Titolo: Link a file con variabile d'ambiente di sistema (immagine png)

L'esigenza attuale, mi è nata in OpenOffice Writer, ma il
comportamento l'ho provato anche in altri programmi come AutoCAD, MS-
Office....  e non è diverso da quello che descriverò.
 
Da alcuni giorni, sto cercando di inserire un immagine, in un
documento .ODT, collegata ad un percorso specifico definito in una
variabile d'ambiente di sistema,  oserei chiamarlo “percorso
dinamico”, se nessuno ha obiezioni.
 
Ho provato a seguire questa procedura :
1. Inserisci --> Immagine --> Da file -->
2. inserimento del testo “%MiaVariabile%\Prova_Immagine.png”  (con
segno di spunta attivo su “Collega”)
3. Click su  “Apri” ... et voilà..   L'immagine è presente sul
documento.
ma....  ahimé !   se apro le proprietà dell'immagine, nel campo
“Collegamento” trovo inaspettatamente il valore  “file:///C:/Documents
and Settings/Mario/Desktop/Prova_Immagine.png”, è un valore costante,
non più legato alla mia %MiaVariabile%,  è stato convertito in testo
al momento dell'invio.  Mi resta solo la consolazione di sapere che
comunque le variabili d'ambiente sono visibili nell'ambiente OOo.
La stessa cosa avviene se utilizzo %homedrive% e %homepath%....
 
Se un giorno, volessi cambiare il contenuto di %MiaVariabile% da “C:
\User\Mario” a “F:\Utenti\Roberto”, le immagini non saranno più
linkate a meno che non vada a cambiare il percorso nei mille documenti
creati,  che a sua volta, potrebbero essere salvati in percorsi
diversi.
 
Qualcuno ha qualche idea su come linkare un percorso relativo dinamico
di questo tipo ?
Grazie.
 
Cordiali saluti.
 
P.S. :  Grazie duemila..... Avviso di “Forse [OT]”
Questo post è stato da me inserito in alcuni NG di Usenet, e nel forum
ufficiale di OO.o, ma forse non era quello giusto...  di queste cose,
sono andato per intuito e qualcosa mi fa pensare che gli esperti di
linux e programmazione ne sanno sicuramente di più. Chiedo scusa ai
restanti.

 comportamento l'ho provato anche in.......  <CUT>
 
Aggiungo anche questo:
 
Qualora, qualche buon “santo” avesse in mente qualche soluzione
simile, racconto per cosa mi serve. Magari.....  c'è un'alternativa
migliore, senza fissarmi troppo sulle variabili d'ambiente.
 
Il mio scopo è quello di creare una directory sul server principale,
un determinato percorso su una LAN aziendale, in cui saranno presenti
diversi moduli, immagini, frammenti di testo etc...    da utilizzare
in altri documenti in modo standard e unificato.
Lanciare uno script o batch su tutte le macchine della rete, per
definire e valorizzare le variabili,   ed infine, distribuire svariati
documenti che fanno tutti uso dei contenuti salvati nei percorsi
specifici.
 
Un'alternativa che avevo valutato inizialmente, era anche quella di
creare delle unità di rete virtuali Z:, Y:, ....   associate ad uno
specifico \\indirizzo\sull'host\di\rete. Con quello, funziona
sicuramente, ma le variabili ambiente che vorrei creare potrebbero
essere molte
   Esempio:
     in Z: componenti per intestazioni e modulistica,     in Y:
immagini e disegni da catalogo
      in X: testi descrittivi,     in W: documenti riguardanti
clienti.... . in V: altro ancora. ....
         in U: ...etc....
e temo che non mi siano sufficienti lettere e numeri dell'alfabeto.
Ed inoltre, questo è vero per i sistemi Windows, ma sulla rete abbiamo
a che fare anche con Linux e magari, in futuro anche un Mac. Pensavo
che l'uso di variabili di ambiente fosse la migliore soluzione.
 
Un po' alla “Marzullo” mi faccio una domanda e mi do una risposta:
Domanda: Perchè non ti crei un albero di directory standard e
unificato e la smetti di rinominare e spostare ogni minuto ?
Risposta:  La vita è lunga (si spera), e nel corso di quella per
qualche ragione può emergere sempre la necessità di fare qualche
cambiamento.
 
...di nuovo,
grazie tremila.

Sei OT, ma oggi sono buono... :-D
 
Capisco il tuo problema..
Una vecchia versione di Installshield permetteva solo path assoluti.
Ergo, se i file del tuo setup venivano spostati era una vera rottura di palle.
E indovina che si occupava di preparare i setup... :-|
 
Personalmente, IO non lo farei. Applicherei il principio KISS..
Unità di rete mappata con dentro una struttra di cartelle PENSATA.
Se cambiano i path, poi ci pensiamo....
Anche xche sono poche le persone consapevoli di quanti documenti monnezza (obsoleti, inutili, mai usati...) si accumulano nei ns capienti dischi...
 
 
Ma se prp vuoi metterti in un casino del genere, butto li una mezza ida ma solo per Word.
 
Crei un modello di documento che useranno tutti.
Quindi, questo modello lo metti in una cartella di rete.
In questo modello definisci n campi calcolati/costanti/ etc.
 
n=numero di variabili di ambiente per 2.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
Ad esempio:
LastImagesPath
CurrentImagePath
 
Nel modello c'e' una macro che parte al caricamento di un documento o alla creazione di un documento.
 
Se il documento è nuovo, le coppie last/current sono aggiornate allo stesso valore, letto dalle variabili di ambiente.
 
Se il documento viene aperto in modifica, in CURRENT metti il valore attuale della variabile d'ambiente di turno.
 
Poi, fai un confronto tra LAST e CURRENT.
Se sono diversi, la macro si smazza i collegamenti presenti nel documento.
Dove trova il valore LAST lo sostituisce con CURRENT.
 
Esempio.
path delle immagini=\\pippo\sharedimaages\
Crei un documento. Avrai quindi:
 
LastImagesPath=\\pippo\sharedimaages
CurrentImagePath=\\pippo\sharedimaages
 
l'utente scrive, fa, disfa etc...Poi salva.
 
N unità di tempo dopo, il path delle immagini diventa questo:
 
\\stikaz\venerdi\aspettandole18\
 
Qualcuno riapre il documento. Avrai quindi:
 
LastImagesPath=\\pippo\sharedimaages
CurrentImagePath=\\stikaz\venerdi\aspettandole18\
 
La macro FORSE si accorge che i path sono diversi e fa una replace MA NON TOCCA lastimagepath!
 
Il forse, trattandosi di un sofwtare Microsoft, e' d'obbligo.
 
Poi, SOLO al save del documento, un'altra macro fa:
LastImagePath=CurrentImagePath
 
Tutto questo si basa su alcuni ovvi (ma non per tutti!) presupposti:
 
1) che tu sia in grado di scrivere le macro per word e che VBA ti permetta di fare quanto richiesto.
 
2) che le macro funzionino SEMPRE e non solo se la luna è ad una certa posizione astronomica con approssimazione fino alla 250a cifra decimale
 
3) che il funziomanento delle macro non dipenda dalla versione di WORD
 
4) che le impostazioni di sicurezza di word o di tutte le entità coinvolte (word, winzozz, antivirus, dominio/activedirectory etc) permettano l'esecuzione delle macro
 
5) che eventualmente una logica di questo genere sia FUNZIONANTE e applicabile a tutti i sofwtare che usi. 
Se anche UN SOLO SOFTWARE non ti permette di fare cio, questa NON E' UNA SOLUZIONE.
 
A.

 
E se provassi con una qualsiasi altra chiave di registro, anche fuori
dal ramo "Environment" ?

 dal ramo "Environment" ?
 
xche?
 
A.
 

..ma tu gia adesso usi il registro??? Spero prp di no!
 
 
 
A.