PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → fcopiefichier() --> ne copie pas avec les fichiers png
fcopiefichier() --> ne copie pas avec les fichiers png
Iniciado por Fany, 29,jul. 2019 10:49 - 6 respuestas
Miembro registrado
365 mensajes
Publicado el 29,julio 2019 - 10:49
Bonjour à tous,

Je ne comprends absolument pas pourquoi je n'arrive pas à copier un fichier png avec "fcopiefichier"

Voilà mon code :
POUR TOUTE LIGNE nNumLigne de TABLE_REQ_Resolution

sNomFichier est une chaîne = TABLE_REQ_Resolution[nNumLigne].COL_IDphoto
sExtension est une chaîne = fExtraitChemin(TABLE_REQ_Resolution[nNumLigne].COL_Nomfichier,fExtension)
sNomExtension est une chaîne = sNomFichier+sExtension

sMonRépertoireDestination est une chaîne = SAI_Repertoire_Cible

SI fRépertoireExiste(sMonRépertoireDestination) = Faux ALORS
fRepCrée(sMonRépertoireDestination)
FIN


SI fFichierExiste(sNomFichier+sExtension)=Faux ALORS
SI fCopieFichier(SAI_Repertoire_Source+"\"+sNomExtension, sMonRépertoireDestination+"\"+sNomExtension) = Faux ALORS
Trace("FICHIER NON COPIE : "+sNomFichier+sExtension)
FIN
FIN

FIN


Pouvez vous m'expliquer pourquoi le code fonctionne avec des "JPG" mais pas avec des "PNG" ou "JPEG" ?

car j'ai fait le test avec ce code :
sFichier est une chaîne
sFichier = fSélecteur("", "", "Sélectionnez un fichier...", "Tous les fichiers (*.*)" + TAB + "*.*", "*.*")

fCopieFichier(sFichier,"C:\Users\UtilisateurX\Desktop\TEST\test.png")

--> et ça fonctionne.

Mes variables utilisées dans mon code sont bonnes, j'ai vérifié les extensions... si ça marche pour "jpg" ça devrait marcher aussi pour mes fichier "png" non ?

D'avance merci pour votre aide
Miembro registrado
24 mensajes
Publicado el 29,julio 2019 - 11:32
Bonjour,

Si fCopieFichier renvoie faux, quelle est l'erreur renvoyée par ErreurInfo ?

Es-tu sûre de cette ligne :
SI fFichierExiste(sNomFichier+sExtension)=Faux ALORS

Quelle est la valeur de "sNomFichier+sExtension" ?
Miembro registrado
953 mensajes
Publicado el 29,julio 2019 - 11:50
bonjour Fany,

comme indiqué par BSC votre contrôle ne va pas, il vous manque le dossier là j'ai l'impression....
et puis peu être rajouter un petit check de la source et utiliser les ["\"] mais c'est un détail ...

il faudrait le remplacer par

SI fFichierExiste(SAI_Repertoire_Source+["\"]+sNomExtension) ALORS
SI fFichierExiste(sMonRépertoireDestination+["\"]+sNomExtension)=Faux ALORS
SI fCopieFichier(SAI_Repertoire_Source+["\"]+sNomExtension, sMonRépertoireDestination+["\"]+sNomExtension) = Faux ALORS
Trace("FICHIER NON COPIE : "+sNomFichier+sExtension)
FIN
FIN
SINON
Trace("FICHIER SOURCE ERRONE : "+SAI_Repertoire_Source+["\"]+sNomExtension)
FIN
Miembro registrado
365 mensajes
Publicado el 02,agosto 2019 - 15:01
Merci à tous pour vos réponses,

Désolée d'avoir tardé à répondre.
Effectivement, j'étais pourtant sure de la valeur "sNomFichier+sExtension", j'ai quand même vérifié la valeur.

En fait, là ou je récupère l'extension avec :
sExtension est une chaîne = fExtraitChemin(TABLE_REQ_Resolution[nNumLigne].COL_Nomfichier,fExtension)


--> TABLE_REQ_Resolution[nNumLigne].COL_Nomfichier prend sa valeur depuis la base de données, depuis une rubrique de type texte, avec... seulement 50 caractères autorisés. Le chemin du fichier était donc "tronqué", et sExtension prenait la valeur de ""

Je suis désolée de vous avoir dérangé alors que l'erreur venait d'une erreur d'inattention. Comme par hasard, les enregistrements concernés par l'erreur étaient des fichiers png... ce qui m'a induit en erreur...

Encore merci pour votre aide (j'ai quand même remplacé "\" par ["\"] qui est une syntaxe plus judicieuse, merci)

Cordialement,

Fany
Miembro registrado
6 mensajes
Publicado el 03,agosto 2019 - 14:31
Plutôt que d'écrire dans ton code "\" , écrit plutôt fsep()... c'est le système qui se charge de définir le séparateur en fonction de l'OS. :)
Miembro registrado
365 mensajes
Publicado el 05,agosto 2019 - 10:20
Merci Patrick pour la précision, c'est noté !
Miembro registrado
4.361 mensajes
Publicado el 05,agosto 2019 - 11:23
Bonjour,
fConstruitChemin (https://doc.pcsoft.fr/fr-FR/?1000019880&name=fconstruitchemin_fonction) est aussi très intéressant. Plus besoin de se soucier des fComplèteRep, des fsep, des "/", des "\" et des ".".

--
Il y a peut être plus simple, mais, ça tourne