Soucis pour simplement copier un fichier

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Soucis pour simplement copier un fichier

Message par Ar-S »

Salut,
Me revoilà avec un petit soucis, je ne pige pas pourquoi mon code marche pas.

En gros je fournis le rar.exe avec mon code, mais au cas ou quelqu'un le supprime, je voudrais que mon programme demande ou se trouve le repertoire de winrar et qu'il copie rar.exe du repertoire de winrar dans le repertoire courant du soft à savoir RepRar$

Code : Tout sélectionner

Filtre$ = "rar.exe|rar.exe"
              Filtre = 0
              If Winrar$=OpenFileRequester("Le fichier rar.exe est introuvable, merci d'indique l'empacement de winrar sur votre disque dur",RepRar$,Filtre$,Filtre)
                WinRarRep$=GetPathPart(Winrar$)
                NomRar$=GetFilePart(Winrar$)
                Copiage=CopyFile(WinRarRep$+NomRar$, RepRar$+NomRar$)
                If Copiage
                  Delay(500)
                  MessageRequester("Information","Le fichier rar est maintenant disponible, merci de recommencer la procédure")
                Else 
                  MessageRequester("Alerte","Fichier rar.exe introuvable")
               
                EndIf
              EndIf
Qu'est-ce qui ne va pas dans cette synthaxe ?? :?
D'avance merci
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

bonjour,

bin je ne comprend pas bien mais tu ve que si le fichier est introuvable ouvrir une fenetre de recherche ( ce que tu a fait ) :) . et copier l'exe dans ton repertoir : RepRar$

c'est bien sa ???


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Tout a fait :)
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

On ne peut pas affecter une variable et faire un test en même temps. Il vaut mieux faire comme ceci :

Code : Tout sélectionner

Winrar$=OpenFileRequester("Le fichier rar.exe est introuvable, merci d'indique l'empacement de winrar sur votre disque dur",RepRar$,Filtre$,Filtre) 
If Winrar$ ... 
Je ne sais pas si ce code est bien utile par contre... Ce que tu peux faire, c'est inclure ton rar.exe directement dans l'éxécutable. Si le programme ne le trouve pas, il l'extrait comme ceci (extrait de l'aide de Droopy's lib) :

Code : Tout sélectionner

DataSection 
StartFile1: 
IncludeBinary "C:\windows\regedit.exe" 
EndFile1: 
EndDataSection 

Size=?EndFile1-?StartFile1

CreateFile(0,"c:\regedit.exe")
WriteData(?StartFile1,Size)
CloseFile(0)
Dernière modification par Cls le dim. 17/juin/2007 17:29, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Ah ba tout simplement !!!

Maintenant ça marche !!
Merci CLS :P
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

arf !!!! trop lent :D .

bon moi j'ai fait sa si non :wink: .

Code : Tout sélectionner

NomFichier$ = OpenFileRequester("fichier rar", "", "rar.exe|*.exe", 0)
CopyFile(NomFichier$,"c:/"+GetFilePart(NomFichier$))

@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Cls a écrit :

Code : Tout sélectionner

DataSection 
StartFile1: 
IncludeBinary "C:\windows\regedit.exe" 
EndFile1: 
EndDataSection 

Size=?EndFile1-?StartFile1

CreateFile(0,"c:\regedit.exe")
WriteData(?StartFile1,Size)
CloseFile(0)

hoouu ! mais c'est du code qui s'autoreproduit ça .... :twisted: :lol: :lol:

sommes nous obligé d'utiliser la dropy lib pour faire ça ?? 8O
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Oui c'est du code qui s'autoreproduit en quelque sorte. :D

On est pas obligé d'utiliser la Droopy' Lib pour faire ca, j'indiquais juste que j'avais fait un copier/coller du code de son aide (rubrique Tips/Include File as Data).
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Cls a écrit :

Code : Tout sélectionner

DataSection 
StartFile1: 
IncludeBinary "C:\windows\regedit.exe" 
EndFile1: 
EndDataSection 

Size=?EndFile1-?StartFile1

CreateFile(0,"c:\regedit.exe")
WriteData(?StartFile1,Size)
CloseFile(0)
C'est trés interressant ça, je vais essayer, et puis faire en sorte que le rar s'autodétruise avant de quitter le soft :)

Le probleme c'est que rar.exe doit bien exister quelque part..
Ne puis je pas directement l'inclure dans l'exe une fois pour toute et ne distribuer que mon exe ??
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Ar-S a écrit :Ne puis je pas directement l'inclure dans l'exe une fois pour toute et ne distribuer que mon exe ??
Ce code sert à ca !

A la compilation, le compilo va inclure le fichier binaire "C:\windows\regedit.exe" (dans l'exemple). Ca peut être n'importe quel fichier. Ton programme incluera donc ce code en lui. C'est grâce à ça qu'on peut faire des installeurs persos par exemple.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Sniff
En le testant j'obtiens une erreur :

writedata() : incorrect number of parameters

(PB4.02 + JaPBe3)
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Normal, ce code n'est pas V4 :

Code : Tout sélectionner

WriteData(?StartFile1,Size) 
Celui - là oui :

Code : Tout sélectionner

WriteData(0, ?StartFile1,Size) 
Voir l'aide de Purebasic :

Code : Tout sélectionner

Syntaxe

WriteData(#Fichier, *Buffer, Longueur) 
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Arf sacrée modif !

Merci Cls :wink:
Répondre