Menù Principale

Cerca
Login
Registrati
Link
<< Discussione precedente | Discussione successiva >>   
[Spostato] Concatenare stringhe

Vai a pagina   <<        >>  
Autore Messaggio
Costa28
mer 20 ott 2010 - 13:29
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 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
RunFile= regedit.exe -s "$Temp$\ResetPercorsi.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
mer 20 ott 2010 - 13:29
online

Utente registrato #74
Registrato il: dom 21 gen 2007 - 11:31
Provenienza: 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
mer 20 ott 2010 - 13:45
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 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
mer 20 ott 2010 - 13:46

online
Utente registrato #33962
Registrato il: sab 18 lug 2009 - 08:45
Provenienza: 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
mer 20 ott 2010 - 14:06
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 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
mer 20 ott 2010 - 15:13

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: 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]
CUESHEET=$Doc$\cuesheet.cue|\\
SPOT=$Doc$\spot.jpg|\\

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\AWSoftware\EAC
Compression Options|"ExternalEncoderOptions"="--best -V --tag-from-file=\"CUESHEET=%CUESHEET%\" --cuesheet=\"%CUESHEET%\" --picture=\"%SPOT%\" %s -o %d" 



---- edit-----

senza barra rovesciata:

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\AWSoftware\EAC
Compression Options|"ExternalEncoderOptions"="--best -V --tag-from-file="CUESHEET=%CUESHEET%" --cuesheet="%CUESHEET%" --picture="%SPOT%" %s -o %d" 



@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]
CUESHEET=$Doc$\cuesheet.cue|\\

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\AWSoftware\EAC
Compression Options|"ExternalEncoderOptions"="--best -V --tag-from-file=/"CUESHEET=%CUESHEET%/"


[ Modificato mer 20 ott 2010 - 15:29 ]
Torna ad inizio pagina
Sito Web
Costa28
mer 20 ott 2010 - 15:47
online
Utente registrato #56
Registrato il: dom 21 gen 2007 - 10:18
Messaggi: 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]
CUESHEET=$Doc$\cuesheet.cue|\\
SPOT=$Doc$\spot.jpg|\\

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\AWSoftware\EAC
Compression Options|"ExternalEncoderOptions"="--best -V --tag-from-file=\"CUESHEET=%CUESHEET%\" --cuesheet=\"%CUESHEET%\" --picture=\"%SPOT%\" %s -o %d" 



---- edit-----

senza barra rovesciata:

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\AWSoftware\EAC
Compression Options|"ExternalEncoderOptions"="--best -V --tag-from-file="CUESHEET=%CUESHEET%" --cuesheet="%CUESHEET%" --picture="%SPOT%" %s -o %d" 



@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]
CUESHEET=$Doc$\cuesheet.cue|\\

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\AWSoftware\EAC
Compression Options|"ExternalEncoderOptions"="--best -V --tag-from-file=/"CUESHEET=%CUESHEET%/"




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
mer 20 ott 2010 - 15:54

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: 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:

[HKEY_CURRENT_USER\Software\AWSoftware\EAC\Compression Options]
"ExternalEncoderOptions"="--best -V --tag-from-file=/"CUESHEET=D:\\X-Prova\\Documents\\cuesheet.cue/" --cuesheet=\"D:\\X-Prova\\Documents\\cuesheet.cue\" --picture=\"D:\\X-Prova\\Documents\\spot.jpg\" %s -o %d"


E modificando l'INI anche:


[HKEY_CURRENT_USER\Software\AWSoftware\EAC\Compression Options]
"ExternalEncoderOptions"="--best -V --tag-from-file=\"CUESHEET=D:\\X-Prova\\Documents\\cuesheet.cue\" --cuesheet=\"D:\\X-Prova\\Documents\\cuesheet.cue\" --picture=\"D:\\X-Prova\\Documents\\spot.jpg\" %s -o %d"



Come dovrebbe essere scritto esattamente nel file .reg?

[ Modificato mer 20 ott 2010 - 16:14 ]
Torna ad inizio pagina
Sito Web
LordJim60
mer 20 ott 2010 - 21:51

online
Utente registrato #33962
Registrato il: sab 18 lug 2009 - 08:45
Provenienza: Roma
Messaggi: 1147
calma calma...
io parlo del problema dei caratteri quotati, facciamo un esempio:
  • apri regedit
  • vai in HKCU\Software
  • tasto destro - nuova chiave
  • digita Test
  • tasto destro su Test - Nuovo Valore Stringa
  • digita parameter

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:
  • tasto destro su parameter - Modifica
  • digitiamo:
    -path="D:\documents"


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

[HKEY_CURRENT_USER\Software\Test]
"parameter"="-path=\"D:\\documents\""


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
gio 21 ott 2010 - 01:34

online

Utente registrato #1
Registrato il: ven 29 dic 2006 - 05:38
Provenienza: 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]
DVDISASTER=$Bin$\dvdisaster\dvdisaster|\\
VIDEOLAN=@ScriptDir@\X-VideoLAN.exe|\\

;(dvdisaster and videolan integration)
AddECC|"Cmd"="\"%DVDISASTER%\" -mRS02 -n dvd -c -i \"$FILE\""
Preview|"Cmd"="\"%VIDEOLAN%\" dvd://\"$DIR\""



Tornando al problema di Costa28, così la chiave viene scritta:

[Environment]
CUESHEET=$Doc$\cuesheet.cue|\\
SPOT=$Doc$\spot.jpg|\\ 

[WriteToReg=$Temp$\ResetPercorsi.reg]
MainKey=HKEY_CURRENT_USER\Software\AWSoftware\EAC
Compression Options|"ExternalEncoderOptions"="\"--best -V --tag-from-file=\"CUESHEET=%CUESHEET%\" --cuesheet=\"%CUESHEET%\" --picture=\"%SPOT%\" %s -o %d\"" 


Vedi immagine:


Torna ad inizio pagina
Sito Web

Vai a pagina   <<        >>  
Moderatori: Danix, Taf, Rcs, Energy, zandet2, ZioZione, Admin, LordJim60

Salta:     Torna ad inizio pagina

RSS discussione: rss 0.92 RSS discussione: rss 2.0 RSS discussione: RDF
Powered by e107 Forum System