cs_LeGuepard
Messages postés38Date d'inscriptionmardi 16 septembre 2003StatutMembreDernière intervention 7 septembre 2015
-
7 oct. 2004 à 01:21
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
7 oct. 2004 à 23:00
Bonjour à tous,
J'ai quelques petits problèmes de DLL. En fait j'ai remarque que deux de mes dll avait un bug commun, à savoir qu'elles déforme des chaines de caractères.
- La première contient une fonction qui à pour but de lire une chaine contenue des les registres de Windows représentant le chemin d'acces d'un répertoire et de la renvoyer vers mon application. Hors, lorsque la chaine arrive dans mon programme, elle est déformée et par conséquent puisqu'elle représente le chemin d'acces du répertoire contenant mes Bases de données, mon application plante.
- La deuxième contient deux fonctions de cryptage et de décryptage. Lorsque de fait appel à ma fonction de cryptage en lui transmettant la chaine de caractères original, celle-ci me renvoie une autre chaine de caractères cryptée. Si maintenant je trasmets cette dernière à la fonction de décryptage, celle-ci doit me retourner une chaine de caractères identique à la chaine original. Hors, parfois cette chaine est également déformée. La plupart du temps, le décryptage est correcte mais par exemple, avec tout les mot se tarminant par "main" comme par exemple "demain", j'ai en retourne quelque chose comme "demaj|".
J'ai alors eu l'envie de pousser mon enquête une peu plus loin pour savoir forcément d'où pouvait venir ce bug. J'ai alors décidé de mettre directement les codes source de mes fonctions, que ce soit celles de lecture des registres ou celles de cryptage, dans mes sources des applications, et là tout fonctionne correctement.
Le problème viens donc bien de mes librairies. Poutant, j'effectue bien le passage des mais chaines de caractères non pas par variables de type "String" mais par des variabkes de type "Pchar".
Alors comme je ne vois vraiment pas comment résoudre ce problème, j'ai donc eu envie de demander à bien plis malin que moi, c'est donc pour cela que je vous pose mes très chers amis cette question.
Voilà, j'espère n'avoir pas été trop long dans mon roman lol, et à tous ceux que ne se sont pas encore endormi en lisant mon histoire, et bien je ne demande qu'une chose, si quelqu'un à une solution, merci de me la faire connaitre!
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 7 oct. 2004 à 23:00
Es-tu sûr de bien réserver de l'espace pour tes chaines quand tu utilises des PChar ?
N'oublie pas de réserver autant d'octets que de caractères PLUS un octet pour le caractère nul (#0) qui doit terminer O-BLI-GA-TOI-RE-MENT les chaines.
Sinon, gare aux plantages...ou lecture de zones mémoires au hasard.
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
May Delphi be with you