Lecteur d'images cryptées
Re: Lecteur d'images cryptées
Franchement, j'avais bien cherché sur le net. Mais bon, meme si ca existe, c'est loin d'etre devenu populaire.
Pour le bug, djes, j'aimerais t'y voir moi derriere le debuggeur a traquer ce bug sans logique. Encore un bug qui entrave le chemin de mes reves...
Pour le bug, djes, j'aimerais t'y voir moi derriere le debuggeur a traquer ce bug sans logique. Encore un bug qui entrave le chemin de mes reves...
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Re: Lecteur d'images cryptées
Le bug est ici :
length est d'un certain nombre mais *MemoryID est a zero. Cela veux dire (je crois) que PB n'a pas pu reserver de memoire.
Pourquoi ?
Code : Tout sélectionner
*MemoryID = AllocateMemory(length)
Pourquoi ?
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Lecteur d'images cryptées
Quand je teste, j'ai pas de bug d'allocation mémoire.
une idée SPH, aulieu de crypter le fichier image en entier, crypte uniquement les données, gardes les entêtes du format (JFIF...) comme ça le fichier est toujours affichable comme image, mais on ne voit rien que du "brouillage" à l'écran, dans le même style que ce que montre lepiaf31.
une idée SPH, aulieu de crypter le fichier image en entier, crypte uniquement les données, gardes les entêtes du format (JFIF...) comme ça le fichier est toujours affichable comme image, mais on ne voit rien que du "brouillage" à l'écran, dans le même style que ce que montre lepiaf31.
Re: Lecteur d'images cryptées
Salut SPH,
perso je trouve que c'est une bonne idée, je partage assez les remarques de TazNormand.
On est sur un forum d'entraide, alors on essaye d'aider les autres un jour et un autre jour ce sont les autres qui nous aident.
Sur ton problème, si length est non nul et que allocatememory échoue, c'est que la mémoire dispo n'est pas suffisante, c'est ce que dit la doc PB
ensuite, j'espère que l'erreur correspondra, tu vas sur le site de MS et tu cherches l'explication avec le numéro d'erreur renvoyé par GetLastError_()
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
As-tu l'erreur lorsque tu fais de nombreuses opérations, car je ne trouve jamais de FreeMemory(*MemoryID) dans ton code.
Il est possible que tu alloues beaucoup de fois de la mémoire sans la désallouer.
je te conseille de mettre ceci après la ligne
de la procedure Pc_ChargerImage()
un test sur la variable length serait un plus, c'est pas grand chose.
A+
Denis
perso je trouve que c'est une bonne idée, je partage assez les remarques de TazNormand.
On est sur un forum d'entraide, alors on essaye d'aider les autres un jour et un autre jour ce sont les autres qui nous aident.
Sur ton problème, si length est non nul et que allocatememory échoue, c'est que la mémoire dispo n'est pas suffisante, c'est ce que dit la doc PB
Je te conseille de mettre un test sur *MemoryID en Debug avec l'api microsoft GetLasterror_()Si la quantité de mémoire demandée est disponible, *MemoryID contiendra l'adresse de début de la zone mémoire, ou 0 si la zone n'a pu être allouée.
Code : Tout sélectionner
If MemoryID = 0
Debug GetLastError_()
EndIf
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
As-tu l'erreur lorsque tu fais de nombreuses opérations, car je ne trouve jamais de FreeMemory(*MemoryID) dans ton code.
Il est possible que tu alloues beaucoup de fois de la mémoire sans la désallouer.
je te conseille de mettre ceci
Code : Tout sélectionner
FreeMemory(*MemoryID)
Code : Tout sélectionner
Resultat = CatchImage(#ImageTmp, *MemoryID, length-6)
un test sur la variable length serait un plus, c'est pas grand chose.
Code : Tout sélectionner
If length
*MemoryID = AllocateMemory(length) ; alloue un bloc mémoire de la taille du fichier
Denis
Re: Lecteur d'images cryptées
Merci denis pour toutes ces astuces. Je les ai essayé mais tot ou tard, PB buggue...
Si tu veux essayer, choisis 3 clés(onglet 3) puis crypte plusieurs images(onglet 2). Ensuite, en gardant tres cles, surf jusqu'a tes images crypté et regarde les(onglet 1) en appuyant sur PAGE UP et PAGE DOWN. Ca marche un moment puis ca plante sans raison...
Si tu veux essayer, choisis 3 clés(onglet 3) puis crypte plusieurs images(onglet 2). Ensuite, en gardant tres cles, surf jusqu'a tes images crypté et regarde les(onglet 1) en appuyant sur PAGE UP et PAGE DOWN. Ca marche un moment puis ca plante sans raison...
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Re: Lecteur d'images cryptées
Sans avoir testé plus que ça, je pense que tu écrases de la mémoire là, si la taille de l'image n'est pas un multiple de 8 :
Code : Tout sélectionner
;length/8
For i=0 To length Step 8
q.q=PeekQ(*MemoryID+i)
; Debug q
For u=1 To 3
q!ReadQuad(u)
If Loc(u)>=Leng(u)
FileSeek(u,0)
EndIf
Next
PokeQ(*MemoryID+i,q)
Next
Re: Lecteur d'images cryptées
Je confirme ce que dit djes.
Avec le purifieur de PB, ça plante sur le PokeQ mais le peekQ doit avoir le même problème.
La boucle For i=0 To length Step 8 doit être fausse car soit on fait :
For i=0 To length - 1
soit on fait
For i=1 To length
Par exemple si tu as 10 octets, c'est soit de 0 à 9, soit de 1 à 10 mais pas de 0 à 10 car là on dépasse de 1 octets la zone
Avec le purifieur de PB, ça plante sur le PokeQ mais le peekQ doit avoir le même problème.
La boucle For i=0 To length Step 8 doit être fausse car soit on fait :
For i=0 To length - 1
soit on fait
For i=1 To length
Par exemple si tu as 10 octets, c'est soit de 0 à 9, soit de 1 à 10 mais pas de 0 à 10 car là on dépasse de 1 octets la zone
Re: Lecteur d'images cryptées
Est-ce que ca, ca pourrait arranger les choses :

Code : Tout sélectionner
*MemoryID = AllocateMemory(length+16)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Re: Lecteur d'images cryptées
Je pense que oui
Re: Lecteur d'images cryptées
@SPH
Mise à part l'histoire de FreeMemory(), si les extensions (ci-dessous) sont en majuscule, que va t il se passer?
Je sais que c'est enfantin comme remarque mais ce genre de truc est important à ne pas négliger car en cas de faux résultats, il est rare de se retrouver dans des cas pareils...
Hum.. et si ext$=".gif" ???
A part ça bon courage SPH
Mise à part l'histoire de FreeMemory(), si les extensions (ci-dessous) sont en majuscule, que va t il se passer?
Je sais que c'est enfantin comme remarque mais ce genre de truc est important à ne pas négliger car en cas de faux résultats, il est rare de se retrouver dans des cas pareils...
Code : Tout sélectionner
If ext$=".bmp" Or ext$=".jpg" Or ext$="jpeg" Or ext$=".png" Or ext$=".tga" Or ext$="tiff"
Gosub cry
EndIf
Hum.. et si ext$=".gif" ???
A part ça bon courage SPH
Re: Lecteur d'images cryptées
je repond a la place de SPH ...anissa a écrit :@SPH
Mise à part l'histoire de FreeMemory(), si les extensions (ci-dessous) sont en majuscule, que va t il se passer?
Je sais que c'est enfantin comme remarque mais ce genre de truc est important à ne pas négliger car en cas de faux résultats, il est rare de se retrouver dans des cas pareils...

certe un simple
Code : Tout sélectionner
If lcase(ext$)=".bmp" Or lcase(ext$)=".jpg" Or lcase(ext$)="jpeg" Or lcase(ext$)=".png" Or lcase(ext$)=".tga" Or lcase(ext$)="tiff"
Gosub cry
EndIf
va regler ce probleme mais ... a ta question :
ben c'est simple la condition if n'est pas verifié .. donc, ... on s'en foutHum.. et si ext$=".gif" ???

ça reviens a dire que les Gif ne seront pas pris en compte....
mais concernant la relation de Purebasic avec les Gif (hein..KCC ? ) , ben c'est pas grave
Dernière modification par Backup le jeu. 07/juil./2011 14:13, modifié 1 fois.
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Lecteur d'images cryptées
Et tu trouves ça droleDobro a écrit :mais concernant la relation de Purebaic avec les Gif (hein..KCC ? ) , ben c'est pas grave

