Mon prog ne marchait plus

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Mon prog ne marchait plus

Message par Chris »

J'avais fait un programme il y a déjà longtemps (avec la version 3.92, ça nous rajeunit pas :lol: ), pour trouver les constantes dans les fichiers .h du SDK, et j'en avais fait un executable qui marchait très bien.

Hier, j'ai voulu l'utiliser, et plus moyen de le faire fonctionner. Il se lançait, et au bout de quelques secondes, il se refermait.

J'ai repris les sources sur PB 3.94, j'ai essayé de le lancer : Même problème.

En mode debug, j'ai vu qu'il me plantait sur un PeekS avec comme explication : "Invalid Memory Access", alors que je n'avais pas retouché au code. :roll:

Le but du programme est de charger le fichier dans un tampon, rechercher la constante, et si il ne la trouve pas, se vider et charger un autre fichier pour recommencer.

J'avais donc mis un *Buffer = AllocateMemory(Size) (où Size est la taille du fichier).

Je l'ai modifié en faisant *Buffer = AllocateMemory(Size+1), et maintenant, ça marche. 8O

Allez comprendre. :?
Quelqu'un a déjà eu ce problème?
Lna
Messages : 181
Inscription : mar. 21/juin/2005 11:11

Message par Lna »

Toutes les chaînes de caractères en PB se terminent par un $00. 8O
D'où le +1 pour pouvoir l'accueillir et bien fonctionner. 8)

Le PEEKS écrivait le $00 en dehors de l'espace mémoire réservé qui n'était pas autorisé. :roll:

@ peluche
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Toutes les chaînes de caractères en PB se terminent par un $00
Oui, ça je le sais.
Mais ce qui m'etonne, c'est que l'executable fonctionnait avant, et plus maintenant.
L'exe ne s'est pas modifié tout seul, quand même. :lol:

Et le source non modifié et chargé dans PB 3.94 non plus, alors qu'il fonctionnait quand j'ai fait l'exe.
Anonyme

Message par Anonyme »

Certainement une màj de l'api sur lequel s'appuient les commandes du PureBasic. cela m'est déjà arrivé , mais avec un autre type de programme.
Lna
Messages : 181
Inscription : mar. 21/juin/2005 11:11

Message par Lna »

C'est windows qui autorise ou non, si les tentatives d'écriture sont possibles ou non. 8O

Ta version de windows lorsque tu utilisais la version 3.92, était la même qu'aujourd'hui ? :idea:
La réservation mémoire pouvait aussi réserver de la memoire par blocs de clusters autorisants l'écriture, et que cette fois ci tu étais arrivé au bout sans le savoir ? :idea:

Code : Tout sélectionner

*pointeur_1=AllocateMemory(5)
*pointeur_2=AllocateMemory(5)

Debug *pointeur_2-*pointeur_1 ; Cluster de 16 octets
Dans tous les cas, il y avait un bug dissimulé qui vient d'être éliminé, par la réservation suffisante de mémoire. 8)

@ peluche
Répondre