Page 1 sur 1
[Résolu] Obtenir nom de fichier sans le chemin
Publié : mer. 03/sept./2014 11:30
par Micoute
Bonjour à tous,
une fois de plus, je viens vers vous pour solliciter votre expérience, j'ai fait une procédure pour charger un fichier et je voudrais qu'il n'y ait que le nom du fichier avec son extension, mais pas le chemin et je ne comprend pas car elle me retourne "" et si je commente la ligne 6, j'ai le chemin + le nom du fichier + l'extension !
Code : Tout sélectionner
Procedure.s ChargerFichier()
FichierParDefaut$ = "*.*"
Filtre$ = "Tous les fichiers (*.*)|*.*"
Filtre = 0
Fichier_a_charger$ = OpenFileRequester("Choisissez un fichier à charger", FichierParDefaut$, Filtre$, Filtre)
Fichier_a_charger$ = GetFilePart(Fichier_a_sauvegarder$)
ProcedureReturn Fichier_a_charger$
EndProcedure
Je vous remercie d'avance pour votre réponse.
Re: Obtenir nom de fichier sans le chemin
Publié : mer. 03/sept./2014 11:46
par GallyHC
Bonjour,
Voila ton code remis en forme et qui fonctionne :
Code : Tout sélectionner
Procedure.s ChargerFichier()
;
Protected.i iFilter
Protected.s sDefaultFile, sFilter, sFileName
sDefaultFile = "*.*"
sFilter = "Tous les fichiers (*.*)|*.*"
iFilter = 0
ProcedureReturn GetFilePart(OpenFileRequester("Choisissez un fichier à charger", sDefaultFile, sFilter, iFilter))
EndProcedure
Debug ChargerFichier()
Pourquoi ton code ne fonctionne pas c'est simple tu utilise plein de variables sans les déclarés et donc il arrive des fois que l'on fasse une petite erreur dans le nom de la variable.... Mais dans ton cas c'est juste que le part utilise une variable vide.
Code : Tout sélectionner
Fichier_a_charger$ = OpenFileRequester("Choisissez un fichier à charger", FichierParDefaut$, Filtre$, Filtre)
Fichier_a_charger$ = GetFilePart(Fichier_a_sauvegarder$)
"Fichier_a_sauvegarder$" aurait du être "Fichier_a_charger$"
Cordialement,
GallyHC
Re: Obtenir nom de fichier sans le chemin
Publié : mer. 03/sept./2014 12:49
par Micoute
Bonjour GallyHC,
non, ça ne marche pas, mais j'aurais pu envoyer mon programme entier et tu aurais vu où était mon erreur, mais ta réponse m'a mis sur la voie.
Voici donc le code.
Code : Tout sélectionner
EnableExplicit
UseZipPacker()
#Fichier_a_charger = 1
#Fichier_a_sauvegarder = 2
Global Filtre$, FichierParDefaut$, Filtre.i
Global Fichier_a_sauvegarder$
Global Fichier_a_charger$
Procedure.s ChargerFichier()
FichierParDefaut$ = "*.*"
Filtre$ = "Tous les fichiers (*.*)|*.*"
Filtre = 0
Fichier_a_charger$ = OpenFileRequester("Choisissez un fichier à charger", FichierParDefaut$, Filtre$, Filtre)
ProcedureReturn Fichier_a_charger$
EndProcedure
Procedure.s SauvegarderFichier()
Filtre$ = "Tous les fichiers (*.*)|*.*"
Filtre = 0
Fichier_a_sauvegarder$ = SaveFileRequester("Choisissez un fichier à sauvegarder", FichierParDefaut$, Filtre$, Filtre)
Fichier_a_sauvegarder$ = GetFilePart(Fichier_a_sauvegarder$, #PB_FileSystem_NoExtension)
Fichier_a_sauvegarder$ + ".zip"
ProcedureReturn Fichier_a_sauvegarder$
EndProcedure
Procedure Fichier_a_compresser(Fichier.s)
Protected longueur, *IDMemoire
If ReadFile(#Fichier_a_charger, Fichier)
longueur = Lof(#Fichier_a_charger)
*IDMemoire = AllocateMemory(longueur)
If *IDMemoire
ReadData(#Fichier_a_charger, *IDMemoire, longueur)
EndIf
CloseFile(#Fichier_a_charger)
ProcedureReturn *IDMemoire
EndIf
EndProcedure
ChargerFichier()
SauvegarderFichier()
Define *mem
If CreatePack(#Fichier_a_sauvegarder, Fichier_a_sauvegarder$, #PB_PackerPlugin_Zip)
*mem = Fichier_a_compresser(Fichier_a_charger$)
AddPackMemory(#Fichier_a_sauvegarder, *mem, MemorySize(*mem), GetFilePart(Fichier_a_charger$))
ClosePack(#Fichier_a_sauvegarder)
FreeMemory(*mem)
EndIf
Merci beaucoup pour ton aide qui m'a été très profitable.
Re: [Résolu] Obtenir nom de fichier sans le chemin
Publié : mer. 03/sept./2014 13:58
par TazNormand
Salut Micoute,
Ton programme ne sait pas où sauvegarder ton archive, car quand tu utilises le FileRequester pour la sauvegarde, tu ne gardes que le nom, donc il te faut repréciser le chemin :
Code : Tout sélectionner
EnableExplicit
UseZipPacker()
#Fichier_a_charger = 1
#Fichier_a_sauvegarder = 2
Global Filtre$, FichierParDefaut$, Filtre.i
Global Fichier_a_sauvegarder$
Global Fichier_a_charger$
Global Chemin_a_sauvegarder$ ; Ajout TazNormand
Global Nom_Fichier_a_sauvegarder$ ; Ajout TazNormand
Procedure.s ChargerFichier()
FichierParDefaut$ = "*.*"
Filtre$ = "Tous les fichiers (*.*)|*.*"
Filtre = 0
Fichier_a_charger$ = OpenFileRequester("Choisissez un fichier à charger", FichierParDefaut$, Filtre$, Filtre)
ProcedureReturn Fichier_a_charger$
EndProcedure
Procedure.s SauvegarderFichier()
Filtre$ = "Tous les fichiers (*.*)|*.*"
Filtre = 0
Fichier_a_sauvegarder$ = SaveFileRequester("Choisissez un fichier à sauvegarder", FichierParDefaut$, Filtre$, Filtre)
Nom_Fichier_a_sauvegarder$ = GetFilePart(Fichier_a_sauvegarder$, #PB_FileSystem_NoExtension)
Chemin_a_sauvegarder$ = GetPathPart(Fichier_a_sauvegarder$) ; Ajout TazNormand
Fichier_a_sauvegarder$ = Chemin_a_sauvegarder$+Nom_Fichier_a_sauvegarder$+".zip" ; Ajout TazNormand
ProcedureReturn Fichier_a_sauvegarder$
EndProcedure
Procedure Fichier_a_compresser(Fichier.s)
Protected longueur, *IDMemoire
If ReadFile(#Fichier_a_charger, Fichier)
longueur = Lof(#Fichier_a_charger)
*IDMemoire = AllocateMemory(longueur)
If *IDMemoire
ReadData(#Fichier_a_charger, *IDMemoire, longueur)
EndIf
CloseFile(#Fichier_a_charger)
ProcedureReturn *IDMemoire
EndIf
EndProcedure
ChargerFichier()
SauvegarderFichier()
Define *mem
If CreatePack(#Fichier_a_sauvegarder, Fichier_a_sauvegarder$, #PB_PackerPlugin_Zip)
*mem = Fichier_a_compresser(Fichier_a_charger$)
AddPackMemory(#Fichier_a_sauvegarder, *mem, MemorySize(*mem), GetFilePart(Fichier_a_charger$))
ClosePack(#Fichier_a_sauvegarder)
FreeMemory(*mem)
EndIf
Re: [Résolu] Obtenir nom de fichier sans le chemin
Publié : mer. 03/sept./2014 14:25
par GallyHC
Bonjour,
Dans tout les cas utilise "EnableExplicit" qui t'obligera à déclarer tes variables, sa évite pas mal de problème.
GallyHC
Re: [Résolu] Obtenir nom de fichier sans le chemin
Publié : mer. 03/sept./2014 14:55
par Micoute
Merci du conseil, GallyHC, mais j'oublie tout le temps, on ne se refait pas !