Combobox et copyfile [Résolu]

Signaler
Messages postés
25
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
6 novembre 2009
-
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
-
Bonjour à tous,
j'ai un petit soucis avec CopyFile dans Delphi.

Je m'explique, en fait je veux faire un truc tout bête, j'ai une liste déroulante que je génère en automatique avec le contenu d'un dossier, ainsi elle se remplie avec tous les fichires qu'il y a à l'intérieur de ce dossier.

Mon but est de selectionner ce fichier, et d'appuyer sur un bouton pour qu'il soit copier sur mon bureau.
En gros j'envoi les chemins sources et destinations dans deux variables, ainsi que le nom du fichier
si je fais CopyFile(Pchar(la_source + le_fichier_selec),Pchar(la_destination + le_fichier_selec),False);
ça ne fonctionne pas, or si je fais

CopyFile(Pchar(la_source + 'test.txt'),Pchar(la_destination + 'test.txt'),False);
ça fonctionne.

Je pense donc avoir un probleme au niveau de la récupération du fichier de ma combobox :
le_fichier_selec:=Combobox.Items[Combobox.itemindex];
j'ai testé d'envoyer cette variable dans un mémo et elle s'affiche correctement, c'est bien le bon fichier, sans erreur ou fautes.

Une idée?
Par avance Merci

17 réponses

Messages postés
25
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
6 novembre 2009

Bingo!
Le problème était donc bien la, il me créait a chaques fois un retour a la ligne en trop.
J'ai utiliser la function Trim(const S: string): string; qui supprime les espaces et les sauts de lignes.
Merci à tous!
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Peux-tu nous dire le format qu'ont les variables "la_source", "le_fichier_selec", "la_destination" ? Il s'agit probablement d'une erreur de formatage (lorsque tu mets bout à bout deux chaînes formatées, il peut y avoir des petits oublis (notamment un backslash en trop ...). Ca m'arrive souvent.

Cordialement, Bacterius !
Messages postés
25
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
6 novembre 2009

Ce sont tous des String.
exemples :
le_fichier_selec : 'test.txt'
la_source : 'C:\Users\Toto\Desktop\gp2\'
la_destination : 'C:\Users\Toto\Desktop\'
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Oui merci mais je voulais savoir comment était formaté ce qu'ils contenaient.
As-tu essayé de faire un ShowMessage(la_destination + le_fichier_selec) pour voir ce que était envoyé au copyfile ?

Cordialement, Bacterius !
Messages postés
25
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
6 novembre 2009

Ouais j'ai essayer d'envoyer ça dans un Mémo.
Ca marche impeccable, le fichier est bien le bon.
C'est pour ça que je ne comprends pas...
J'ai même envoyer tout le chemin dans ce mémo, y'a pas d'erreurs...
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Etrange, as-tu les droits requis pour copier dans le répertoire Bureau ?

Cordialement, Bacterius !
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
Avec 8 compos DE BASE, tu as été obligé de réinventer la roue et galérer ?
Messages postés
25
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
6 novembre 2009

J'ai delphi 6, et je ne connais pas "8 composants de base".
Sinon, oui j'ai les droits requis pour faire ce copier coller puisque lorsque je passe en parametre dans le CopyFile le nom du fichire "en dur" ça passe sans probleme et ça se copie sur le bureau.
Sinon j'avais remarquer que lorsque j'envoyais ma variable contenant le nom du fichier dans un mémo, même en faisant memo1.text:=''; j'avais
test.txt

En gros c'est comme si il appuyait sur la touche entrer apres avoir écrit le contenu de ma variable.
J'ai donc essayer d'ajouter un +chr(8) (le backspace) mais non ça ne change rien...
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Les 8 composants de base se trouvent normalement dans ton répertoire Exemples et Win 3.1. Néanmoins, il faut peut-être installer un ActiveX pour les composants Shell ...

Cordialement, Bacterius !
Messages postés
25
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
6 novembre 2009

Oui peut être, enfin mon but c'est quand même de comprendre pourquoi ça ne fonctionne pas.
Messages postés
3793
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
8
Oui, mais souvent à problème bizarre il y a solution simple !

Cordialement, Bacterius !
Messages postés
3811
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
15 juin 2020
30
La première opération serait d'afficher le résultat de :
la_source + le_fichier_selec
et de :
la_destination + le_fichier_selec

il est fort possible que le problème s'y localise.
 
@+
Cirec

<hr siz="" />
Messages postés
25
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
6 novembre 2009

Oui il est même a peu pres certains que le probleme se situ à ce niveau, seulement j'ai vérifier, et les chemins sont correctes :s
Messages postés
3811
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
15 juin 2020
30
essaye comme ça :

CopyFile(Pchar('"' + la_source + le_fichier_selec + '"'),
  Pchar('"' + la_destination + le_fichier_selec + '"'), False);

 
@+
Cirec

<hr siz="" />
Messages postés
25
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
6 novembre 2009

Non ça marche pas,par contre j'ai fait un test et ça confirme tout à fait ce que je pensais :
il retourne a la ligne une fois quand il récupère le fichier_selec, je m'explique
à la place qu'il m'affiche (memo1.text:= ( '"' + la_source + le_fichier_selec + '"')+(chr(13)+chr(10))+('"' + la_destination + le_fichier_selec + '"'),  :

"C:\Users\Toto\Desktop\gp2\test.txt"
"C:\Users\Toto\Desktop\test.txt"

Il m'affiche :

"C:\Users\Toto\Desktop\gp2\test.txt
"
"C:\Users\Toto\Desktop\test.txt
"

Alors que je ne lui demande qu'une seule mise a la ligne dans le code (chr(13)+chr(10))!
Il fait donc un retour a la ligne tout seul lors de la selection du fichier! j'ai essayer d'annuler ça avec un backspace (chr(8)) ça ne marche pas...

Je rappel que le fichier je l'obtient comme ça :
le_fichier_selec: =combobox.items[combobox.itemindex];
Messages postés
3
Date d'inscription
dimanche 14 février 2010
Statut
Membre
Dernière intervention
1 août 2010

Bonjour,

Je débute avec Delphi et je dois créer un programme identique à celui-ci.

Je dois afficher les fichiers d'un répertoire pour copier dans un autre répertoire le fichier sélectionné et ensuite appeler un programme .bat.

Je ne sais pas encore générer la liste déroulante.


Pouvez-vous me conseiller ?

Merci
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
Tu as déjà posté ta question ailleurs, merci de ne pas faire remonter des vieux posts pour reposer votre question. ...