Main menu

Search
Login
Signup
Links
<< Previous thread | Next thread >>   
[Spostato] Concatenare stringhe

Go to page   <<        >>  
Author Post
Costa28
Wed 20 Oct 2010 - 13:29
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 64
LordJim60 wrote ...

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 wrote ...

[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



[ Edited Wed 20 Oct 2010 - 13:33 ]
Back to top
ZioZione
Wed 20 Oct 2010 - 13:29
online

Registered Member #74
Joined: Sun 21 Jan 2007 - 11:31
Location: Tradate (VA)
Posts: 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
Back to top
Costa28
Wed 20 Oct 2010 - 13:45
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 64
Ci siamo parlati addosso


ZioZione wrote ...

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 wrote ...
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 wrote ...
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



[ Edited Wed 20 Oct 2010 - 13:54 ]
Back to top
LordJim60
Wed 20 Oct 2010 - 13:46

online
Registered Member #33962
Joined: Sat 18 Jul 2009 - 08:45
Location: Roma
Posts: 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 )

[ Edited Wed 20 Oct 2010 - 13:47 ]
Back to top
Costa28
Wed 20 Oct 2010 - 14:06
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 64
LordJim60 wrote ...

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....
Back to top
Danix
Wed 20 Oct 2010 - 15:13

online

Registered Member #1
Joined: Fri 29 Dec 2006 - 05:38
Location: Sassari
Posts: 12926
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 wrote ...

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%/"


[ Edited Wed 20 Oct 2010 - 15:29 ]
Back to top
Website
Costa28
Wed 20 Oct 2010 - 15:47
online
Registered Member #56
Joined: Sun 21 Jan 2007 - 10:18
Posts: 64
Danix wrote ...

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 wrote ...

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 wrote ...

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.
Back to top
Danix
Wed 20 Oct 2010 - 15:54

online

Registered Member #1
Joined: Fri 29 Dec 2006 - 05:38
Location: Sassari
Posts: 12926
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?

[ Edited Wed 20 Oct 2010 - 16:14 ]
Back to top
Website
LordJim60
Wed 20 Oct 2010 - 21:51

online
Registered Member #33962
Joined: Sat 18 Jul 2009 - 08:45
Location: Roma
Posts: 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'è.

[ Edited Wed 20 Oct 2010 - 21:54 ]
Back to top
Danix
Thu 21 Oct 2010 - 01:34

online

Registered Member #1
Joined: Fri 29 Dec 2006 - 05:38
Location: Sassari
Posts: 12926
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:


Back to top
Website

Go to page   <<        >>  
Moderators: Danix, Taf, Rcs, Energy, zandet2, ZioZione, Admin, LordJim60

Jump:     Back to top

Syndicate this thread: rss 0.92 Syndicate this thread: rss 2.0 Syndicate this thread: RDF
Powered by e107 Forum System