Page 1 sur 1

writeregister ecrit qu'une parte de l'entree

Publié : mer. 30/nov./2016 23:13
par ChaudEf
bonsoir, je compile en unicode, et lorsque j'inscris quelque chose dans le registry, c'a n'inscrit que la moitie de la chaine.
il y a une solution?
merci

Re: writeregister ecrit qu'une parte de l'entree

Publié : mer. 30/nov./2016 23:18
par falsam
Pour ça faudrait montrer un bout de code pour voir comment tu procèdes.

Re: writeregister ecrit qu'une parte de l'entree

Publié : mer. 30/nov./2016 23:25
par ChaudEf

Code : Tout sélectionner

Procedure.s readRegister(OpenKey.l, subkey.s, KeySet.s)
	Define.l hKey, datasize
	Define.s KeyValue, result
	
	hKey = 0 
  KeyValue = Space(255) 
  datasize = 255 
  
  If RegOpenKeyEx_(OpenKey, subkey, 0, #KEY_READ, @hKey)  = 0 
    If RegQueryValueEx_(hKey, KeySet, 0, 0, @KeyValue, @datasize) = 0 
    	result = Left(KeyValue, datasize - 1) 
    EndIf 
  EndIf 
  
  ProcedureReturn result
EndProcedure

Procedure.l writeRegister(OpenKey.l, SubKey.s, keyset.s, keyvalue.s)
	Define.l hKey, DataSize, result
	
	hKey = 0
	
  If RegCreateKey_(OpenKey,SubKey,@hKey) = 0
  	If RegSetValueEx_(hKey,keyset,0,#REG_SZ,@keyvalue, Len(keyvalue)) = 0
  		result = 1
    EndIf 
    RegCloseKey_(hKey)
  EndIf
  
  ProcedureReturn result 
EndProcedure

Procedure.l deleteRegister(OpenKey.l, SubKey.s, keyset.s)
	Define.l hKey, result
	
	hKey = 0
	
  If RegOpenKey_(OpenKey, SubKey, @hKey) = 0
  	If RegDeleteValue_(hKey, keyset) = 0
  		result = 1
    EndIf 
    RegCloseKey_(hKey)
  EndIf
  
  ProcedureReturn result 
EndProcedure

writeRegister(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", "winsys", "test")
Debug readRegister(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", "winsys")

Re: writeregister ecrit qu'une parte de l'entree

Publié : mer. 30/nov./2016 23:32
par falsam
Essayes en remplaçant @KeyValue par Ascii(KeyValue) idem pour @datasize par Ascii(datasize)

Re: writeregister ecrit qu'une parte de l'entree

Publié : mer. 30/nov./2016 23:35
par ChaudEf
marche pas

Re: writeregister ecrit qu'une parte de l'entree

Publié : jeu. 01/déc./2016 8:27
par GallyHC
Bonjour,

As tu bien fait ce que ta dit "Falsam" pour le "write" et aussi le "read"?

Cordialement,
GallyHC

Re: writeregister ecrit qu'une parte de l'entree

Publié : jeu. 01/déc./2016 10:54
par Ar-S
Ce serait pratique si dans votre signature (editer votre profile) vous indiquiez votre version windows et votre version de PB.
ça aide parfois à diriger les recherches en cas d'erreurs.

Re: writeregister ecrit qu'une parte de l'entree

Publié : jeu. 01/déc./2016 10:58
par ChaudEf
ben oui c'est ca le probleme, je suis sous l'ancienne version de pb, et quand j'installe la nouvelle version (5.5) ca me dit
can't load built-in libraries, please reinstall purebasic
:(

Re: writeregister ecrit qu'une parte de l'entree

Publié : jeu. 01/déc./2016 13:38
par Marc56
ChaudEf a écrit :ben oui c'est ca le probleme, je suis sous l'ancienne version de pb, et quand j'installe la nouvelle version (5.5) ca me dit
can't load built-in libraries, please reinstall purebasic
:(
Cela veut dire que tu installes PB dans un répertoire qui contient déjà des vieilles libs (tiers) incompatibles 5.50.
Installe PB 5.50 dans un nouveau répertoire (vide) et en mode admin de préférence.

Tu peux avoir autant d'installation que tu veux dans des répertoires différents.
Cela permet d'utiliser bêtas, standards, LTS, x32 et x64.

Sauf paramétrage spécial, toutes les versions utiliseront les même paramètres de préférences
Ce qui évite de ré-paramétrer chaque installation (couleur, modèles, historique).
(Sauvegarder le répertoire %appdata%\purebasic)

Re: writeregister ecrit qu'une parte de l'entree

Publié : jeu. 01/déc./2016 14:19
par Ar-S
Tu peux suivre une arborescence comme ça quand tu installes :
PB/X64/4.40
PB/X86/4.40
PB/X64/5.50
PB/X86/5.50

Ainsi tu n'as jamais ce genre de soucis.

Ensuite tu n'utilise qu'une interface (de la dernière version tant qu'à faire) et tu indiques les différents chemins des autres versions de PB que tu as.
Dans >Fichier/préférences/compilateur<

Pour tes codes c'est pareil...
J'ai un dossier CODES PB en dehors du répertoire PB avec des sous dossiers 5.50, 4.43 etc...
Ainsi tu peux utiliser ET compiler de vieux codes si besoin avec la même interface.

Re: writeregister ecrit qu'une parte de l'entree

Publié : jeu. 01/déc./2016 14:54
par El Papounet
Remplace la ligne 24 par:

Code : Tout sélectionner

If RegSetValueEx_(hKey,keyset,0,#REG_SZ,@keyvalue, StringByteLength(keyvalue)) = 0

Re: writeregister ecrit qu'une parte de l'entree

Publié : jeu. 01/déc./2016 17:08
par ChaudEf
El Papounet a écrit :Remplace la ligne 24 par:

Code : Tout sélectionner

If RegSetValueEx_(hKey,keyset,0,#REG_SZ,@keyvalue, StringByteLength(keyvalue)) = 0
Merci mais ca n'a pas aide, ca ne marche toujours pas.

j'ai reinstalle purebasic, et toujours la meme erreur, mais l'ancienne version marche (je suis reste sur 5.30)