IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Problème avec MoveFileEx


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 19
    Par défaut Problème avec MoveFileEx
    Bonjour à tous, j'ai commencé à développer en Delphi il y a quelques jours seulement et un problème se pose à moi.

    Je souhaite déplacer un fichier d'un dossier à un autre, le fichier étant celui selectionné par l'utilisateur dans la listbox.

    Les dossiers sont fixes mais le nom du fichier est donc variable.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Var
        Chemin_Source : String;
        Chemin_Dest : String;
    begin
        Chemin_Source := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente\' + Nom_Fichier;
        Chemin_Dest := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\Accepté\' + Nom_Fichier;
        MoveFileEx(PChar(Chemin_Source),PChar(Chemin_Dest), MOVEFILE_COPY_ALLOWED);
    Où Nom_Fichier est une variable globale.

    Cela fonctionne cependant lorsque je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     MoveFileEx(PChar('C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente\Test.pdf'),
    PChar('C:\Documents and Settings\informaticien\Bureau\Valid_PDF\Accepté\Test.pdf'),
    MOVEFILE_COPY_ALLOWED);
    Je n'ai aucun message d'erreur lorsque j'utilise le premier code, mais rien ne se passe...

    Je ne sais pas de quoi cela peut venir, un truc que je n'aurais pas déclaré dans USES? ou autre?

    Merci à vous pour vos réponses.

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Bonjour et Bienvenue sur les forums de Developpez.com ,

    Pour ton souci, peux-tu nous montrer comment tu renseignes la variable Nom_Fichier ?

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Salut,

    As-tu vérifier par un showmessage la valeur global de ton Nom_Fichier avant de faire ton Move, ca se trouve elle est vide ta valeur ?

    @+

  4. #4
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Hallucinant ero... lol

    doit y avoir quelque seconde qui nous sépare..pour la même idée.. MDr


  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 19
    Par défaut
    Quand je clique sur une occurence de ma ListBox j'ai ce bout de code (plus d'autres choses hein)

    Nom_Fichier := ListBox1.items[ListBox1.itemindex] ;

    J'ai testé effectivement de voir si la variable était vide mais même quand j'affiche la totalité de ma variable "Chemin_Source" elle m'affiche ce que je désire...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 19
    Par défaut
    @ Cincap :

    Le probleme reste le même et pire, quand j'affiche le chemin il me met"+ Nom_Fichier" à la fin au lieu du nom du fichier

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 19
    Par défaut
    Non ca devrait aller il n'y a rien de confidentiel.

    Il se peut que quelques trucs ne servent à rien j'ai fait 2 3 tests par ci par la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    unit ValidPDF;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, JvExForms, JvCustomItemViewer, JvImagesViewer, StdCtrls, Grids,
      DBGrids, dblookup, OleCtrls, SHDocVw;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        ListBox1: TListBox;
        WebBrowser1: TWebBrowser;
        Button2: TButton;
        Label1: TLabel;
        Label2: TLabel;
        Edit1: TEdit;
        procedure ListBox1DblClick(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      Nom_Fichier : string;
     
    implementation
     
    {$R *.dfm}
     
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    Var
        Chemin_dossier : String;
        Info   : TSearchRec;
        Chemin_Source : String;
        Chemin_Dest : String;
        result : boolean;
    begin
     
     
        Chemin_Source := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente\+ Nom_Fichier' ;
        Chemin_Dest := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\Accepté\+ Nom_Fichier' ;
        ShowMessage (Chemin_Source);
        ShowMessage (Chemin_Dest);
        MoveFileEx(PChar(Chemin_Source),PChar(Chemin_Dest), MOVEFILE_COPY_ALLOWED);
     
        ListBox1.Items.clear;
     
      { Pour être sur que la barre oblique finisse le nom du chemin }
      Chemin_dossier := IncludeTrailingPathDelimiter('C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente');
     
     
      { Recherche de la première entrée du répertoire }
      If FindFirst(Chemin_dossier+'*.*',faAnyFile,Info)=0 Then
      Begin
        Repeat
          { Les fichiers sont affichés dans ListBox1 }
          { Les répertoires sont affichés dans ListBox2 }
            ListBox1.Items.Add(Info.FindData.cFileName)
     
          { Il faut ensuite rechercher l'entrée suivante }
        Until FindNext(Info)<>0;
     
        { Dans le cas ou une entrée au moins est trouvée il faut }
        { appeler FindClose pour libérer les ressources de la recherche }
        FindClose(Info);
     
      end;
    end;
     
    procedure TForm1.FormShow(Sender: TObject);
    Var
        Chemin_dossier : String;
        Info   : TSearchRec;
    begin
      ListBox1.Items.clear;
     
      { Pour être sur que la barre oblique finisse le nom du chemin }
      Chemin_dossier := IncludeTrailingPathDelimiter('C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente');
     
     
      { Recherche de la première entrée du répertoire }
      If FindFirst(Chemin_dossier+'*.*',faAnyFile,Info)=0 Then
      Begin
        Repeat
          { Les fichiers sont affichés dans ListBox1 }
          { Les répertoires sont affichés dans ListBox2 }
            ListBox1.Items.Add(Info.FindData.cFileName)
     
          { Il faut ensuite rechercher l'entrée suivante }
        Until FindNext(Info)<>0;
     
        { Dans le cas ou une entrée au moins est trouvée il faut }
        { appeler FindClose pour libérer les ressources de la recherche }
        FindClose(Info);
      End;
     
    end;
     
     
    procedure TForm1.ListBox1DblClick(Sender: TObject);
      Var
      Chemin_fichier : string;
      Dlg: TopenDialog ;
    begin
      Nom_Fichier := ListBox1.items[ListBox1.itemindex]  ;
      Edit1.Text := Nom_Fichier;
      Chemin_fichier :=  'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente\'
      + Nom_Fichier;
      Dlg:= TopenDialog.Create(nil) ;
      Dlg.FileName:= Chemin_fichier;
      Try
        if Dlg.Execute Then
          webbrowser1.Navigate(dlg.FileName);
      Finally
        Freeandnil(Dlg);
      End ;
     
    end;
     
     
     
     
    end.

  8. #8
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    Re,

    Est-ce que tu peux essayer avec un repertoire différent, juste pour tester si le problème ne viens pas de l'utilisation de caractère accentué dans ton lien ? (accepté)

    Bye

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 614
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 614
    Par défaut
    Exact, confusion entre deux réponses sur un autre site.

    Reste à savoir le code de la variable du Nom_Fichier.

    @ Buzzleclaire, pertinent ta suggestion !

    @+,

    Cincap

  10. #10
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 094
    Par défaut
    Essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Var
        Chemin_Source : String;
        Chemin_Dest : String;
    begin
        Chemin_Source := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente\' + Nom_Fichier;
        Chemin_Dest := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\Accepté\' + Nom_Fichier;
        if SysUtils.FileExists(Chemin_Source) then
          MoveFileEx(PChar(Chemin_Source),PChar(Chemin_Dest), MOVEFILE_COPY_ALLOWED + MOVEFILE_REPLACE_EXISTING)
        else 
          ShowMessage('Existe pas : ' + Chemin_Source);
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 614
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 614
    Par défaut
    @ Toon74, essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Var
        Chemin_Source : String;
        Chemin_Dest : String;
    begin
        Chemin_Source := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente\+ Nom_Fichier' ;
        Chemin_Dest := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\Accepté\+ Nom_Fichier' ;
        MoveFileEx(PChar(Chemin_Source),PChar(Chemin_Dest), MOVEFILE_COPY_ALLOWED);
    @+,

    Cincap

  12. #12
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Citation Envoyé par cincap Voir le message
    @ Toon74, essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Var
        Chemin_Source : String;
        Chemin_Dest : String;
    begin
        Chemin_Source := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\En attente\+ Nom_Fichier' ;
        Chemin_Dest := 'C:\Documents and Settings\informaticien\Bureau\Valid_PDF\Accepté\+ Nom_Fichier' ;
        MoveFileEx(PChar(Chemin_Source),PChar(Chemin_Dest), MOVEFILE_COPY_ALLOWED);
    @+,

    Cincap
    Je ne vois pas comment cela marcherait mieux Il n'y a aucune concaténation de la variable Nom_Fichier. Avec ce code, tu construiras toujours le même fichier ... C'est à dire "+ Nom_Fichier".

    Citation Envoyé par Toon74
    Quand je clique sur une occurence de ma ListBox j'ai ce bout de code (plus d'autres choses hein)

    Nom_Fichier := ListBox1.items[ListBox1.itemindex] ;

    J'ai testé effectivement de voir si la variable était vide mais même quand j'affiche la totalité de ma variable "Chemin_Source" elle m'affiche ce que je désire...
    J'avoue ne pas voir d'erreur jusqu'ici. Tu peux nous montrer l'intégralité du code pour voir, ou c'est trop important pour que tu le postes ?

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo