<< Discussione precedente | Discussione successiva >> |
[Spostato] Concatenare stringhe Vai a pagina << >> |
Autore | Messaggio |
Costa28 |
| ||
Utente registrato #56 Registrato il: dom 21 gen 2007 - 10:18Messaggi: 64 | LordJim60 ha scritto ... c'è qualcosa che non mi convince, tu hai postato il file HKCU.reg ma nel tuo INI, tu applichi le modifiche a ResetPercorsi.reg in $temp$ e poi carichi il file di registro HKCU.reg.... che non hai mai alterato e subito dopo ResetPercorsi ResetPercorsi.reg e HKCU.reg sono uguali e il file INI che hai postato è il risultato di più di una prova? Chi scrive ResetPercorsi in temp? Costa28 ha scritto ... [WriteToReg=$Temp$\ResetPercorsi.reg] [omississ] Compression Options|"ExternalEncoderOptions"=--best -V --tag-from-file=\"CUESHEET=%MYDOC%\cuesheet.cue\" --cuesheet=\"%MYDOC%\cuesheet.cue\" --picture=\"%MYDOC%\spot.jpg\" %s -o %d|"\\ [omississ] [RunBefore] RegEdit=$Home$\$AppName$\HKCU.reg RunFile= regedit.exe -s "$Temp$\ResetPercorsi.reg" Dunque.... non capisco il senso della tua domanda... ma probabilmente è un problema mio... Ti premetto che io non ho mai avuto l'ardire di creare delle X-App ma semplicemente di portabilizzarmi alcune apps Nel corso della mia crescita ho riscontrato alcuni problemi nell'uso di questo "portabilizzatore" che non sempre sono/siete riusciti a risolvere. E quindi mi sono dovuto arrangiare. Prova ne sia:
RegEdit=$Home$\$AppName$\HKCU.reg
E' un workaround del fatto che se scrivevo: RegEdit$=Home$\$AppName$\HKCU.reg|$Temp$\ResetPercorsi.reg oppure RegEdit$=Home$\$AppName$\HKCU.reg RegEdit$=ResetPercorsi.reg Per motivi ignoti veniva (a volte) eseguito solamente il primo comando Questo qualche versione fa. Ora non so. Torniamo a bomba al tuo quesito HKCU contiene tutte le chiavi da inserire nel registro tramite Resetpercorsi creo un file reg con le soli chiavi che contengono path (e che quindi probabilmente sono cambiati dall'ultima esecuzione) e che vado a sovrascrivere a quelle oramai caricate nel registro. Perchè non modifico direttamente HKCU? Sempre per il problema che qualche versione fa (o forse a causa della gestione dei vari =\) ho avuto problemi di funzionamento (non so se dovuti al prog o alla mia ignoranza). In questo modo invece il tutto funzia. Perchè ResetPercorsi in $Temp$? Così alla fine dell'uso del programma viene cancellato automaticamente. Ed è per questo che ritengo inutile diffondere i miei ini che moooolto probabilmente sono fuori dai vostri standard. Tu come avresti fatto? Dopo questo cappello introduttivo ci sono novità per il quesito iniziale? Grazie [ Modificato mer 20 ott 2010 - 13:33 ] | ||
Torna ad inizio pagina |
ZioZione |
| ||
Utente registrato #74 Registrato il: dom 21 gen 2007 - 11:31Provenienza: Tradate (VA) Messaggi: 3821 | Ciao Costa28, ho visto il tuo .INI e, come sospettavo, hai sbagliato ad aggiungere la variabile sotto [Environment]: hai messo %MYDOC%=$Doc$ invece di MYDOC=$Doc$ Le variabili di ambiente vanno dichiarate senza i simboli % e usate con i simboli %. Poi, se devi caricare più file .reg, basta separarne i nomi con il delimitatore "|" (barra verticale), poi pensa a tutto il comando RegEdit=(....). Non serve quindi (a maggior ragione su Vista/Seven sui quali non funziona neanche) chiamare esplicitamente il comando "regedit.exe". Infine, anch'io non ho capito a cosa servono i comandi "WriteToReg"; alla fine dell'esecuzione di EAC, quelle voci devono proprio sparire dal registro e così facendo, invece, le riscrivi vuote... Se hai più percorsi, usa comandi multipli WriteToReg (uno per ogni ramo del registro) e RegEdit, così è tutto più pulito. Per quanto riguarda la Regular Expression da utilizzare per la tua richiesta iniziale, ci sto pensando... abbi fede... Nel frattempo, approfitta per dare un'occhiata anche alla nuova versione del manuale, così magari ti chiarisci qualche dubbio (vedi sopra). Cordialmente ZioZione | ||
Torna ad inizio pagina |
Costa28 |
| ||
Utente registrato #56 Registrato il: dom 21 gen 2007 - 10:18Messaggi: 64 | Ci siamo parlati addosso ZioZione ha scritto ... Ciao Costa28, ho visto il tuo .INI e, come sospettavo, hai sbagliato ad aggiungere la variabile sotto [Environment]: hai messo %MYDOC%=$Doc$ invece di MYDOC=$Doc$ Le variabili di ambiente vanno dichiarate senza i simboli % e usate con i simboli %. Ora vedo se funzia, anche se non capisco perchè la variabile $Doc$ non verrebbe riconosciuta e quella %MYDOC% si Aggiornamento.... Non funziona o meglio è errata perchè la stringa non viene neanche inserita nel registro [/quote1287574607] ZioZione ha scritto ... Poi, se devi caricare più file .reg, basta separarne i nomi con il delimitatore "|" (barra verticale), poi pensa a tutto il comando RegEdit=(....). Non serve quindi (a maggior ragione su Vista/Seven sui quali non funziona neanche) chiamare esplicitamente il comando "regedit.exe". Vedi sopra. Comunque in W7 regedit funziona perfettamente ZioZione ha scritto ... Infine, anch'io non ho capito a cosa servono i comandi "WriteToReg"; alla fine dell'esecuzione di EAC, quelle voci devono proprio sparire dal registro e così facendo, invece, le riscrivi vuote... Anche di questa mia abitudine di resettare alcuni percorsi in uscita ne avevamo già parlato qualche post fa. E' solamente un motivo di "privacy" Resetto tutti i percorsi (Actualpath nella versione precedente puntava a %DESKTOP%) contenenti il nomeutente del P.C. Vero... potrei anche cancellarle... ma per fare ciò mi toccherebbe usare sempre il regedit... quindi meglio azzerarle [ Modificato mer 20 ott 2010 - 13:54 ] | ||
Torna ad inizio pagina |
LordJim60 |
| ||
Utente registrato #33962 Registrato il: sab 18 lug 2009 - 08:45Provenienza: Roma Messaggi: 1147 | forse erano i vari tentativi che stava facendo, in realtà il suo problema è un altro: Con WriteToReg ( ma anche con WriteToIni ) non è possibile inserire una stringa che contiene la sequenza /" giacchè viene sempre convertita in //", e questo non piace a Regedit che non riesce più ad interpretare la chiave e semplicemente la ignora. in pratica se provate a scrivere con WriteToReg questa stringa in una chiave:
--best -V --tag-from-file=/"CUESHEET=Y:\\winpenpack\\Documents\\cuesheet.cue/"
vedrete che non è possibile. ( perlomeno non lo è con le mie conoscenze ) [ Modificato mer 20 ott 2010 - 13:47 ] | ||
Torna ad inizio pagina |
Costa28 |
| ||
Utente registrato #56 Registrato il: dom 21 gen 2007 - 10:18Messaggi: 64 | LordJim60 ha scritto ... forse erano i vari tentativi che stava facendo, in realtà il suo problema è un altro: Con WriteToReg ( ma anche con WriteToIni ) non è possibile inserire una stringa che contiene la sequenza /" giacchè viene sempre convertita in //", e questo non piace a Regedit che non riesce più ad interpretare la chiave e semplicemente la ignora. in pratica se provate a scrivere con WriteToReg questa stringa in una chiave:
--best -V --tag-from-file=/"CUESHEET=Y:\\winpenpack\\Documents\\cuesheet.cue/"
vedrete che non è possibile. ( perlomeno non lo è con le mie conoscenze ) Mmmmmmmm non mi trovo.... Andiamoci alla femminina... Partiamo da campo Additional command-line option vuoto Inseriamo --best -V --tag-from-file="CUESHEET=H:\cuesheet.cue" --cuesheet="H:\cuesheet.cue" --picture="H:\spot.jpg" %s -o %d Usciamo dal programma e in HKCU naturalmente proveremo questo: "ExternalEncoderOptions"="--best -V --tag-from-file=\"CUESHEET=H:\\cuesheet.cue\" --cuesheet=\"H:\\cuesheet.cue\" --picture=\"H:\\spot.jpg\" %s -o %d" Il fatto che al prossimo riavvio del programma il campo sia correttamente compilato significa che WriteToReg lo carica regolarmente. O mi sono perso qualcosa.... | ||
Torna ad inizio pagina |
Danix |
| ||
Utente registrato #1 Registrato il: ven 29 dic 2006 - 05:38Provenienza: Sassari Messaggi: 12956 | Non ho capito cosa dev'essere scritto esattamente nel .reg. La barra rovesciata va inserita o meno? Nell'attesa, prova questa:
[Environment]
---- edit----- senza barra rovesciata:
[WriteToReg=$Temp$\ResetPercorsi.reg]
@LordJim60: LordJim60 ha scritto ... non è possibile inserire una stringa che contiene la sequenza /" giacchè viene sempre convertita in //", e questo non piace a Regedit che non riesce più ad interpretare la chiave e semplicemente la ignora. Con questo trucchetto sembra funzionare:
[Environment]
[ Modificato mer 20 ott 2010 - 15:29 ] | ||
Torna ad inizio pagina |
Costa28 |
| ||
Utente registrato #56 Registrato il: dom 21 gen 2007 - 10:18Messaggi: 64 | Danix ha scritto ... La barra rovesciata va inserita o meno? Se ti riferisci a \" la barra viene inserita in automatico per dichiarare che " è una stringa e non il delimitatore di campo Danix ha scritto ... Nell'attesa, prova questa:
[Environment]
---- edit----- senza barra rovesciata:
[WriteToReg=$Temp$\ResetPercorsi.reg]
@LordJim60: LordJim60 ha scritto ... non è possibile inserire una stringa che contiene la sequenza /" giacchè viene sempre convertita in //", e questo non piace a Regedit che non riesce più ad interpretare la chiave e semplicemente la ignora. Con questo trucchetto sembra funzionare:
[Environment]
Non funzionano nessuna di tutte e tre. Nel senso che c'è un errore e quindi non viene caricato nulla nella chiave. | ||
Torna ad inizio pagina |
Danix |
| ||
Utente registrato #1 Registrato il: ven 29 dic 2006 - 05:38Provenienza: Sassari Messaggi: 12956 | Non so se l'errore dipende dal programma (che io non ho scaricato e testato), ma a me il launcher scrive regolarmente:
E modificando l'INI anche:
[HKEY_CURRENT_USER\Software\AWSoftware\EAC\Compression Options]
Come dovrebbe essere scritto esattamente nel file .reg? [ Modificato mer 20 ott 2010 - 16:14 ] | ||
Torna ad inizio pagina |
LordJim60 |
| ||
Utente registrato #33962 Registrato il: sab 18 lug 2009 - 08:45Provenienza: Roma Messaggi: 1147 | calma calma... io parlo del problema dei caratteri quotati, facciamo un esempio:
ipotizziamo che il valore parameter richieda una stringa del tipo: -path=" Attenzione il nostro parametro ( ipotetico) pretende che il path sia inserito tra apici. quindi:
insomma tutta questa tiritera per avere una chiave con un valore che contiene uno o più apici... a questo punto se esporto la chiave con regedit ho questo:
REGEDIT4
come possiamo vedere, in pura tradizione C/C++, sia i backslash che i doppi apici vengono quotati con un backslash in testa, ovvero il carattere \ diventa \\ e il carattere " diventa \". Adesso da quanto ho potuto provare mi sembra che la funzione WriteToReg si comporta bene con il backslash, ma no con il doppio apice, infatti se provate a utilizzare WriteToReg con il testo:
-path="D:\documents"
il risultato sarà:
-path="D:\\documents"
ovvero backslash quotati ma i doppi apici no. d'altra parte se provo a scrivere ( sempre con WriteToReg ) il testo:
-path=\"D:\documents\"
il risultato sarà:
-path=\\"D:\\documents\\"
ovvero la funzione continua ad ignorare la sequenza \" e mi raddoppia il backslash ma la cosa peggiore è questa: ricordo che la stringa nel file reg è contenuta tra apici, quindi si presenta così:
"parameter"="-path=\\"D:\\documents\\""
il programma regedit comincia a leggere la stringa quando arriva ai due backslash li converte in uno solo, poi incontra un doppio apice che non tratta come carattere perchè il backslash è stato già consumato e pensa che è l'indicatore che la stringa è conclusa, poi trova altri caratteri e qui diventa una dichiarazione fuori standard e semplicemente viene scartata, questo è il motivo per cui trovate il file reg scritto (quasi) bene ma la chiave nel registro non c'è. [ Modificato mer 20 ott 2010 - 21:54 ] | ||
Torna ad inizio pagina |
Danix |
| ||
Utente registrato #1 Registrato il: ven 29 dic 2006 - 05:38Provenienza: Sassari Messaggi: 12956 | Hai ragione, LordJim, la chiave non viene proprio inserita nel registro! Avevo notato problemi simili anche in DVDStyler, dove alla fine avevo risolto in un modo simile a quello postato sopra:
[Environment]
Tornando al problema di Costa28, così la chiave viene scritta:
[Environment]
Vedi immagine: | ||
Torna ad inizio pagina |
Moderatori: Danix, Taf, Rcs, Energy, zandet2, ZioZione, Admin, LordJim60 |