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)