Page 1 sur 1

Soucis pour simplement copier un fichier

Publié : dim. 17/juin/2007 16:35
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

Publié : dim. 17/juin/2007 17:14
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 ???


@++

Publié : dim. 17/juin/2007 17:15
par Ar-S
Tout a fait :)

Publié : dim. 17/juin/2007 17:19
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)

Publié : dim. 17/juin/2007 17:25
par Ar-S
Ah ba tout simplement !!!

Maintenant ça marche !!
Merci CLS :P

Publié : dim. 17/juin/2007 17:29
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$))

@++

Publié : dim. 17/juin/2007 18:39
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

Publié : dim. 17/juin/2007 18:56
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).

Publié : dim. 17/juin/2007 19:08
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 ??

Publié : dim. 17/juin/2007 19:13
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.

Publié : dim. 17/juin/2007 19:34
par Ar-S
Sniff
En le testant j'obtiens une erreur :

writedata() : incorrect number of parameters

(PB4.02 + JaPBe3)

Publié : dim. 17/juin/2007 19:47
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) 

Publié : dim. 17/juin/2007 20:32
par Ar-S
Arf sacrée modif !

Merci Cls :wink: