Newsgroup: it.comp.programmare.win32
Titolo: [?] Problemi con i tipi di dati!

Salve a tutti,
ho qualche problema con i tipi di dati e le conversioni in C.
Devo scrivere nel registry di Windows delle chiavi.
Ho realizzato senza problema la procedura per individuare la "key" e leggere
una specifica "value" utilizzando RegOpenKeyEx e RegQueryValueEx.
Ora devo poter modificare il valore di una "value" specifica e qui iniziano
i problemi di conversione dei dati.
La RegSetValueEx mi consente di fare questa operazione passando come
argomento un buffer di tipo BYTE: un buffer di "unsigned char" quindi..... a
seconda però del tipo di dato contenuto nella value (REG_SZ, REG_DWORD....)
questo buffer deve contenere di volta in volta dati di tipo stringa (array
di char) o di tipo DWORD.....
Il problema è che il nuovo valore da impostare io lo leggo da un file (o
dalla linea di comando comunque la sostanza non cambia) quindi quello che ho
è una stringa di caratteri.... come effettuo la conversione per esempio
quando devo impostare una "value" di tipo REG_DWORD considerando che il
buffer è una variabile di tipo BYTE?....
è un po' contorta la mia domanda vero? il fatto è che ho un po' di
confusione sui tipi di dati e se qualcuno volesse farmi chiarezza avrebbe
tutta la mia gratitudine.....
--
Bye
Johnny
http://digilander.iol.it/Superpork

 ho qualche problema con i tipi di dati e le conversioni in C.
[cut]
DWORD mioDato;
//setta mio dato
RegSetValueEx(.............,(const BYTE*)&mioDato,........);
tuto qui :-)
ciao.

 ha scritto nel messaggio
news:9ur4j1$os4$1...@news.ngi.it...


 file.... il problema era questo!
scusa ,non avevo letto tutto il messaggio :-(
se ho capito bene vorresti cambiare il tipo da dword a stringa(nella dword
c'entrano solo 4 caratteri,sempre che non usi l'unicode) e settarne il
valore,giusto?
dovrebbe bastare regsetvalueex
(hKey,nomeValore,0L,REG_SZ,(LPCTSTR)miaStringa,_tcslen(miaStringa));
se non è possibile fare la conversione del tipo forse potresti conservarti
il nome della value,cancellare quello che già c'è e farne uno nuovo con il
tipo che ti occorre.
spero di averci azzaccato stavolta,ciao.

 ha scritto nel messaggio
news:9usreo$7ld$1...@news.ngi.it...


 perdo....
allora ti rimando alla prima risposta:
TCHAR stringa[SZ];
LeggiStringaDaFile(stringa);
DWORD valore=_tcstoul(stringa,NULL,10);
RegSetValueEx(.............,(const BYTE*)&valore,........);
il cast rende la chiamata alla funzione corretta e poi ci pensa win a
interpretare cio che c'è all'indirizzo nel modo giusto.
ciao.

 buffer č una variabile di tipo BYTE?....
nn puoi semplicemente leggere la stringa dal file byte x byte

 ha scritto nel messaggio
news:kYoQ7.263293$sq5.12...@news.infostrada.it...


partiamo dal principo ke con una word puoi scrivere due caratteri aschi o
uno unicode; se tu hai nel file la stringa "ab" leggendo i caratteri uno
alla volta avrai prima 'a' ke corrisponde a 0x61(97) e poi 'b' che
corrisponde a 0x62(98), successivamente scrivi a e b nella word del registro
per avere "61 62"

 ha scritto nel messaggio
news:1WuQ7.265871$sq5.12...@news.infostrada.it...

 cosa......
nn sono sicura ma credo che il num corrispondente positivo corrisponde ai
caratteri stampabili, quelli negativi ai caratteri nn stampabili