problème de fichier ouvert, mal ouvert, pas ouvert...
Publié : ven. 16/sept./2016 1:58
bonjour,je traîne une erreur depuis quelques semaines et je pense avoir trouver mon problème mais je ne suis pas certain...
voici le code initial.....
Le code a été fourni par Zorro...
Dans la procédure decode il y a la ligne
que j'ai transformé en :
je pense que la ligne initial ouvre le fichier choisi par savefilerequester mais pas celle que j'ai mise...
Yves
je vais envoyer dans le prochain message la partie de code de la routine que j'ai transformé
voici le code initial.....
Le code a été fourni par Zorro...
Code : Tout sélectionner
; Demo: Streaming AES file encode/decode
; netmaestro August 2010
; Purebasic 4.51
Declare Encode(void)
Declare Decode(void)
OpenWindow(0,0,0,200,120,"Cryptor!",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(0, 50,20,100,20,"Encrypt a file")
ButtonGadget(1, 50,50,100,20,"Decrypt a file")
CreateStatusBar(0, WindowID(0))
AddStatusBarField(200)
StatusBarProgress(0,0,0,#PB_ProgressBar_Smooth,0,100)
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case 0
CreateThread(@Encode(), 0)
Case 1
CreateThread(@Decode(), 0)
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
End
Procedure Encode(void)
chunksize = 4096
rawfilename$ = OpenFileRequester("Please choose a file to encrypt:","","",0)
encfilename$ = rawfilename$+".enc"
If OpenFile(0, rawfilename$)
If CreateFile(1, encfilename$)
DisableGadget(0,1)
DisableGadget(1,1)
length.q = Lof(0)
numparts = length/chunksize
lastchunksize = length%chunksize
If lastchunksize
numparts+1
lastchunk = numparts
Else
lastchunk = 0
EndIf
*raw = AllocateMemory(chunksize)
*secure = AllocateMemory(chunksize)
StartAESCipher(0, ?key, 256, ?iVector, #PB_Cipher_CBC|#PB_Cipher_Encode)
For i=1 To numparts
If i=lastchunk
FillMemory(*raw, chunksize, 0, #PB_Byte)
ReadData(0, *raw, lastchunksize)
Else
ReadData(0, *raw, chunksize)
EndIf
AddCipherBuffer(0, *raw, *secure, chunksize)
WriteData(1, *secure, chunksize)
prog.d = i/numparts*100
StatusBarProgress(0,0, Int(prog))
Delay(1)
Next
If lastchunksize
WriteLong(1, lastchunksize)
Else
WriteLong(1, chunksize)
EndIf
FinishCipher(0)
CloseFile(0)
CloseFile(1)
FreeMemory(*raw)
FreeMemory(*secure)
MessageRequester("Finished", "Encrypted file "+encfilename$+" saved",#MB_ICONINFORMATION)
StatusBarProgress(0,0,0)
DisableGadget(0,0)
DisableGadget(1,0)
EndIf
EndIf
EndProcedure
Procedure Decode(void)
chunksize = 4096
encfilename$ = OpenFileRequester("Please choose a file to decrypt:","","",0)
rawfilename$ = SaveFileRequester("Please choose a new name for the decrypted file","","",0)
If OpenFile(0, encfilename$)
FileSeek(0, Lof(0)-4)
lastchunksize = ReadLong(0)
FileSeek(0, 0)
If CreateFile(1, rawfilename$)
DisableGadget(0,1)
DisableGadget(1,1)
length.q = Lof(0)
numparts = length/chunksize
*raw = AllocateMemory(chunksize)
*secure = AllocateMemory(chunksize)
StartAESCipher(0, ?key, 256, ?iVector, #PB_Cipher_CBC|#PB_Cipher_Decode)
For i=1 To numparts
ReadData(0, *secure, chunksize)
AddCipherBuffer(0, *secure, *raw, chunksize)
If i=numparts
WriteData(1, *raw, lastchunksize)
Else
WriteData(1, *raw, chunksize)
EndIf
prog.d = i/numparts*100
StatusBarProgress(0,0, Int(prog))
Delay(1)
Next
FinishCipher(0)
CloseFile(0)
CloseFile(1)
FreeMemory(*raw)
FreeMemory(*secure)
MessageRequester("Finished", "Decrypted file "+rawfilename$+" saved",#MB_ICONINFORMATION)
StatusBarProgress(0,0,0)
DisableGadget(0,0)
DisableGadget(1,0)
EndIf
EndIf
EndProcedure
DataSection
key:
Data.b $8C,$15,$51,$2C,$0C,$8A,$0A,$D8,$07,$E4,$21,$A2,$8E,$83,$A3,$88,$8A,$CA,$FB,$E1
Data.b $7B,$A3,$6B,$D6,$BC,$F7,$E6,$CD,$FE,$B5,$D7,$B3
iVector:
Data.b $08,$0C,$96,$48,$33,$51,$35,$80,$0C,$A9,$42,$1E,$11,$E0,$83,$C7,$C4,$C6,$E1,$E4
Data.b $2E,$40,$81,$0A,$24,$70,$00,$10,$08,$B3,$64,$21
EndDataSection
;
; Epb
Code : Tout sélectionner
rawfilename$ = SaveFileRequester("Please choose a new name for the decrypted file","","",0)
Code : Tout sélectionner
rawfilename$ = "licence.dat"
Yves
je vais envoyer dans le prochain message la partie de code de la routine que j'ai transformé