Bug? (copie par writedouble) [Résolu]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Bug? (copie par writedouble) [Résolu]

Message par SPH »

Et voila, encore un bug inexplicable. Cette fois ci, c'est avec les readdouble et writedouble. Ce code permet de copier double par double tout un fichier et fini octet par octet. La copie est de la meme taille mais chez moi, il y a dans le fichier un octet qui cloche. Ainsi, cette image :
Image
se copie mal comme ca:
Image
Et chez vous ?

Code : Tout sélectionner

UseJPEGImageDecoder()


file$ = OpenFileRequester("Sélectionnez un fichier","","JPG (.jpg)|*.jpg|All files (*.*)|*.*",0)
  If file$
    If ReadFile(0, file$) 
      len=Lof(0)
      length = Len/8
      Dim p.d(length)
      Dim p2.b(8)
      For i=0 To length-1
        p(i)=ReadDouble(0)
      Next
      For i=1 To Len-length*8
        p2(i)=ReadByte(0)
      Next
      
    EndIf
      CloseFile(0)
  EndIf
  
  
CreateFile(0, "d:/000.jpg")
For i=0 To length-1
  WriteDouble(0,p(i))
Next
For i=1 To Len-length*8
  WriteByte(0,p2(i))  
Next
  CloseFile(0)


Dernière modification par SPH le sam. 02/juil./2011 9:31, modifié 1 fois.

!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
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Bug? (copie par writedouble)

Message par SPH »

Meme bug sous vista.

Je me demande vraiment ce que vous allez m'inventer :mrgreen:

!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
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Bug? (copie par writedouble)

Message par G-Rom »

je comprends pas ton code :

For i=0 To length-1
WriteDouble(0,p(i))
Next
For i=1 To Len-length*8
WriteByte(0,p2(i))
Next


tu écrit un double puis tu réecris des bytes au mêmes endroit... 8O
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Bug? (copie par writedouble)

Message par SPH »

G-Rom a écrit :je comprends pas ton code :

For i=0 To length-1
WriteDouble(0,p(i))
Next
For i=1 To Len-length*8
WriteByte(0,p2(i))
Next


tu écrit un double puis tu réecris des bytes au mêmes endroit... 8O
Un fichier peux contenir un nombre non entier de double. Alors on ecrit tous les double et on complete les octets restants

!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
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Bug? (copie par writedouble)

Message par SPH »

En "long", ca marche :

Code : Tout sélectionner

UseJPEGImageDecoder()


file$ = OpenFileRequester("Sélectionnez un fichier","","JPG (.jpg)|*.jpg|All files (*.*)|*.*",0)
  If file$
    If ReadFile(0, file$) 
      len=Lof(0)
      length = Len/4
      Dim p.d(length)
      Dim p2.b(8)
      For i=0 To length-1
        p(i)=ReadLong(0)
      Next
      For i=1 To Len-length*4
        p2(i)=ReadByte(0)
      Next
      
    EndIf
      CloseFile(0)
  EndIf
  
  
CreateFile(0, "d:/000.jpg")
For i=0 To length-1
  WriteLong(0,p(i))
Next
For i=1 To Len-length*4
  WriteByte(0,p2(i))  
Next
  CloseFile(0)

!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
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Bug? (copie par writedouble)

Message par G-Rom »

Un fichier peux contenir un nombre non entier de double. Alors on ecrit tous les double et on complete les octets restants
C'est de la prise de tête, j'ai pas envi de me raclé la soupière ce soir.
Bonne soirée.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Bug? (copie par writedouble)

Message par Le Soldat Inconnu »

C'est pas Double qu'il faut prendre, c'est Quad

Code : Tout sélectionner

UseJPEGImageDecoder()

file$ = "5.jpg"
If file$
	If ReadFile(0, file$)
		len = Lof(0)
		length = len / 8
		Dim p.q(length)
		Dim p2.b(8)
		
		For i = 0 To length - 1
			p(i) = ReadQuad(0)
		Next
		
		For i = 1 To len - length * 8
			p2(i) = ReadByte(0)
		Next
		
	EndIf
	CloseFile(0)
EndIf


If CreateFile(0, "6.jpg")
	For i = 0 To length - 1
		WriteQuad(0, p(i))
	Next
	For i = 1 To len - length * 8
		WriteByte(0, p2(i))
	Next
	CloseFile(0)
EndIf

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Bug? (copie par writedouble)

Message par SPH »

J'avais essayé mais ca ne marchait pas. Et puisque ton code fonctionne, je me suis appercu que la difference etait la :

Code : Tout sélectionner

      Dim p.q(length)
Merci

!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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Bug? (copie par writedouble)

Message par Backup »

..............
Répondre