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

C++Builder Discussion :

Problème pour déplacer des fichiers


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut Problème pour déplacer des fichiers
    Bonjour à tous

    Je réalise actuellement un logiciel qui utilise un fichier XML pour charger une suite d'images.

    Je voudrais inclure une exportation / Importation de profil pour pouvoir utiliser ces profils sur différentes machines ou sera utilisé mon logiciel.

    J'ai donc utilisé le composant de la JVCL JVZibMultiple pour réaliser la compression de mon fichier XML et des images auquelles il fait référence.

    pour l'exportation, aucun souci, en revanche, c'est pour l'importation que cela se complique. En effet, je ne peux pas placer mes images et mon fichier XML dans le même répertoire qu'ils étaient sur la machine ou j'ai exporter le profil.

    Je décompresse donc dans un premier temps mon fichier dans un répertoire temporaire. Je demande à l'utilisateur ou il veut placer le fichier XML ainsi que le dossier ou il veut que les images soient placées.

    Je charge mon fichier XML dans ma classe qui sert a la gestion des profil, pour modifier les chemins se rapportant aux images.

    Je modifie ces chemins et en même temps, je vais placer les images dans le répertoire des Images spécifiés par l'utilisateur, et c'est là que cela coince, cela ne veut pas déplacer les images.

    Voici mon code

    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
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
     
    // Inporter un profil
    void __fastcall TPrincipalForm::ImporterProfil1Click(TObject *Sender)
    {
            // On crée la boite de dialogue pour sélectionner le profil
            TOpenDialog *SelectionnerExport = new TOpenDialog(PrincipalForm);
     
            // On initialise le répertoire par défaut de la boite de dialogue
            SelectionnerExport->InitialDir = RepertoireExportProfil;
     
            // On définit l'extension des fichiers affiché
            SelectionnerExport->DefaultExt = ".zip";
     
            // On définit le filtre des fichiers
            SelectionnerExport->Filter = "Fichiers ZIP (*.zip)|*.zip|Tous fichiers (*.*)|*.*";
     
            // Si l'utilisateur à cliqué sur Ok
            if(SelectionnerExport->Execute())
            {
                    // Si le répertoire d'export de profil à changé
                    if(AnsiString(ExtractFilePath(SelectionnerExport->FileName)).AnsiCompareIC(RepertoireExportProfil) != 0)
                    {
                            // On récupère le nouveau répertoire des exports de profils
                            RepertoireExportProfil = ExtractFilePath(SelectionnerExport->FileName);
     
                            // On sauvegarde le nouveau paramètre
                            SauvegarderParametres(false, false, false, true);
                    }
     
                    // On va choisir le
                    TSelRepertoireForm *SelRepertoire = new TSelRepertoireForm(PrincipalForm);
     
                    // On renseigne le titre de la boite de dialogue
                    SelRepertoire->Caption = "Repertoire de profil";
     
                    // Si le répertoire des profils n'existe pas
                    if(!DirectoryExists(RepertoireProfil))
                    {
                            // On remplace le Répertoire source par le répertoire de l'application
                            RepertoireProfil = ExtractFilePath(Application->ExeName);
     
                            // On sauvegarde le nouveau répertoire source
                            SauvegarderParametres(true, false, false, false);
                    }
     
                    // On charge le répertoire des profils
                    SelRepertoire->DirectoryListBox->Directory = RepertoireProfil;
     
                    // On positionne la boite de dialogue
                    SelRepertoire->Left = (ClientWidth / 2) - (SelRepertoire->Width / 2);
                    SelRepertoire->Top = (ClientHeight / 2) - (SelRepertoire->Height / 2);
     
                    // On ouvre la boite de dialogue
                    if(SelRepertoire->ShowModal() == mrOk)
                    {
                            // Si le répertoire de sélection à changé
                            if(SelRepertoire->DirectoryListBox->Directory.AnsiCompareIC(RepertoireProfil) != 0)
                            {
                                    // On mémorise le nouveau répertoire des profils
                                    RepertoireProfil = SelRepertoire->DirectoryListBox->Directory;
     
                                    // On sauvegarde le nouveau répertoire source
                                    SauvegarderParametres(true, false, false, false);
                            }
     
                            // Répertoire temporaire pour la décompression
                            RepertoireTemp = RepertoireProfil + "\\Temp";
     
                            // On renseigne le titre de la boite de dialogue
                            SelRepertoire->Caption = "Repertoire des Images";
     
                            // Si le répertoire des Images n'existe pas
                            if(!DirectoryExists(RepertoireImages))
                            {
                                    // On remplace le Répertoire Images par le répertoire de l'application
                                    RepertoireImages = ExtractFilePath(Application->ExeName);
     
                                    // On sauvegarde le nouveau répertoire source
                                    SauvegarderParametres(false, true, false, false);
                            }
     
                            // On charge le répertoire des images
                            SelRepertoire->DirectoryListBox->Directory = RepertoireImages;
     
                            // On ouvre la boite de dialogue
                            if(SelRepertoire->ShowModal() == mrOk)
                            {
                                    // Si le répertoire de sélection à changé
                                    if(SelRepertoire->DirectoryListBox->Directory.AnsiCompareIC(RepertoireImages) != 0)
                                    {
                                            // On mémorise le nouveau répertoire des Images
                                            RepertoireImages = SelRepertoire->DirectoryListBox->Directory;
     
                                            // On sauvegarde le nouveau répertoire source
                                            SauvegarderParametres(false, true, false, false);
                                    }
     
                                    // On crée le répertoire temporaire pour la décompression
                                    if(CreateDirectory(RepertoireTemp.c_str(), 0))
                                    {
                                            // on décompresse le fichier dans le répertoire des exports
                                            Compresseur->DecompressFile(SelectionnerExport->FileName, RepertoireTemp, false, false);
     
                                            // Objet pour la recherche de fichier
                                            // nom du fichier de profil
                                            AnsiString NomFichierProfil = "";
     
                                            TSearchRec InfosFichiers;
     
                                            // S'il existe au moin un fichier
                                            if(FindFirst(RepertoireTemp + "\\*.*", faAnyFile, InfosFichiers) == 0)
                                            {
                                                    bool Sortie = false;
     
                                                    do
                                                    {
                                                            // Si l'extension du fichier est .xml
                                                            if(ExtractFileExt(InfosFichiers.Name).LowerCase().AnsiCompareIC(".xml") == 0)
                                                            {
                                                                    // on récupère le nom du fichier de profil
                                                                    NomFichierProfil = InfosFichiers.Name;
     
                                                                    // On a trouver le fichier, on sort
                                                                    Sortie = true;
                                                            }
     
                                                            // Si on a traité tous les fichiers
                                                            if(FindNext(InfosFichiers))
                                                            {
                                                                    // On sort de la boucle
                                                                    Sortie = true;
                                                            }
                                                    }
                                                    // Tant qu'il reste des fichiers
                                                    while(!Sortie);
     
                                                    // On ferme la recherche
                                                    FindClose(InfosFichiers);
                                            }
     
                                            // On charge le fichier de profil
                                            ChargerFichierXML(RepertoireTemp + "\\" + NomFichierProfil);
     
                                            // on détruit le fichier car on en a plus besoin
                                            DeleteFile(RepertoireTemp + "\\" + NomFichierProfil);
     
                                            // On va balayer les questions du profil
                                            for(int i = 0; i < ProfilQuestions->ListeQuestions->Count; i++)
                                            {
                                                    // On extrait la question
                                                    TQuestion *Question = (TQuestion *)(ProfilQuestions->ListeQuestions->Items[i]);
     
                                                    // On va balayer toutes les images de la questions
                                                    for(int j = 0; j < Question->ListeImages->Count; j++)
                                                    {
                                                            // On extrait l'image
                                                            TImageProfil *ImageProfil = (TImageProfil *)(Question->ListeImages->Items[j]);
     
                                                            ShowMessage("Chemin de l'image dans le profil " + ImageProfil->Chemin);
     
                                                            // on construit le nouveau chemin de l'image
                                                            AnsiString NouveauCheminImage = RepertoireImages + "\\";
                                                            NouveauCheminImage += ExtractFileName(ImageProfil->Chemin);
     
                                                            ShowMessage("Nouveau chemin de l'image " + NouveauCheminImage);
     
                                                            // On regarde si le fichier existe déjà
                                                            if(FileExists(NouveauCheminImage))
                                                            {
                                                                    AnsiString Message = "Le fichier" + NouveauCheminImage + " existe déjà !\nVoulez-vous l'ecraser ?";
     
                                                                    // Si l'utilisateur désire écraser le fichier
                                                                    if(Application->MessageBox(Message.c_str() ,"Attention !", MB_YESNO) == IDYES)
                                                                    {
                                                                            // On détruit le fichier
                                                                            DeleteFile(NouveauCheminImage);
                                                                    }
                                                            }
     
                                                            if(!CopyFile(ImageProfil->Chemin.c_str(), NouveauCheminImage.c_str(), true))
                                                            //if (!MoveFile(ImageProfil->Chemin.c_str(), NouveauCheminImage.c_str()))
                                                            {
                                                                    ShowMessage("Erreur dans le déplacement des images !");
                                                            }
     
                                                            // on remplace le chemin de l'image par le nouveau
                                                            ImageProfil->Chemin = NouveauCheminImage;
                                                    }
                                            }
     
                                            // Crée le document XML
                                            CreerFichierXML();
     
                                            // on regarde si un fichier portant le même nom existe déja
                                            if(FileExists(RepertoireProfil + "\\" + NomFichierProfil))
                                            {
                                                    AnsiString Message = "Le fichier" + RepertoireProfil + "\\" + NomFichierProfil + " existe déjà !\nVoulez-vous l'ecraser ?";
     
                                                    // Si l'utilisateur désire écraser le fichier
                                                    if(Application->MessageBox(Message.c_str() ,"Attention !", MB_YESNO) == IDYES)
                                                    {
                                                            // On détruit le fichier
                                                            DeleteFile(RepertoireProfil + "\\" + NomFichierProfil);
                                                    }
                                            }
     
                                            // On le sauvegarde
                                            DocumentXML->SaveToFile(RepertoireProfil + "\\" + NomFichierProfil);
     
                                            // On vide el répertoire temporaire
                                            ViderRepertoireTemp();
     
                                            // on détruit le profil
                                            delete ProfilQuestions;
     
                                            // On marque qu'il n'y a plus de profil de chargé
                                            ProfilCharge = false;
     
                                    }
                                    else
                                    {
                                          // Le répertoire n'a pas été créé
                                          ShowMessage("Erreur dans la création du répertoire temporaire pour l'extraction du profil !");
                                    }
                            }
                    }
            }
    }
    C'est le MoveFile ou le CopyFile qui me renvoit systématiquement False

    Merci d'avance pour votre aide

  2. #2
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Je ne sais pas si j'ai été assez clair.

    Pour faire simple, mon problème réside simplement pour le déplacement de fichiers.

    Que j'utilise MoveFile ou CopyFile, les deux fonctions me renvoit systématiquement False, c'est à dire que le déplacement ou la copie n'ont pas réussi.

    Je ne comprend pas pourquoi, quelqu'un aurait une solution ?

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Je n'ai pas lu à fond ton code, mais il me semble que tu ne transmets que le nom du répertoire de destination et pas le chemin complet avec le nom de fichier.

    CopyFile accepte les wildcard, mais avec les règles suivantes (voir l'aide):
    - si source est un fichier, alors destination doit être un nom de fichier
    - si source contient des wildcards, alors destination doit être un nom de répertoire

  4. #4
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Justement, j'ai vérifié par des affichages.
    Ma source et ma cible sont des chemins complet.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Voici le code que j'ai utilisé dans un de mes projet pour recopier des répertoires:

    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
    //---------------------------------------------------------------------------
    //! Copy all files in a folder into another location
    int TForm1::CopyFiles(AnsiString source, AnsiString target, bool recurse)
    {
     
      int    count=0;                      // Count # of copied files
     
      // Copy each file from the source to the target
      TSearchRec F;                                   // Search result
      int done;
      // Check for single file or the whole subfiles
      if (DirectoryExists(source))  {
        source+="\\";
        // Create the destination folder
        if ((target.AnsiPos(":")==0)&&(target[0]!='.')) {
          ForceDirectories(".\\"+target);
        } else {
          ForceDirectories(target);
        }
        // Check for subfiles
        done = FindFirst(source+"\\*.*",faDirectory,F);
      } else {
        done = FindFirst(source,faDirectory,F);         // Check source file
      }
      // Look for all the corresponding files or folders
      while (done==0) {
        AnsiString subSource=ExtractFilePath(source);
        if (subSource.IsEmpty()) subSource=".\\"+F.Name;
        else                     subSource=subSource+"\\"+F.Name;
        if (F.Attr&faDirectory) {
          if ((F.Name!=".")&&(F.Name!="..")) {
            // Copy subdir if not a special relative one
            AnsiString subTarget=target+"\\"+F.Name;
            if ((FileExists(subTarget))||(FileExists(target))) {
              // Can't copy a folder in a file !!
              ShowMessage(AnsiString("TXMLParser::Copy: Can't copy a folder in a file!!\n")
                        +"folder is: \""+source.c_str()+"\"\nfile is \""+target.c_str()+"\"");
            } else {
              // Assert the target folder exists and copy the whole source folde in it
              ForceDirectories(subTarget);
              if (recurse) count+=CopyFiles(subSource, subTarget, recurse);
            }
          }
        } else {
          // Copy file (and replace destination if exists)
          // Test if the original name was already a file or only a folder name
          AnsiString subTarget=target;
          if (DirectoryExists(subTarget)) subTarget+="\\"+F.Name;
     
          if (CopyFile(subSource.c_str(),subTarget.c_str(),false)==0) {
            // Can't copy file !!
            ShowMessage(AnsiString("TXMLParser::Copy: Can't copy file!!\n")
                      +"source is: \""+subSource.c_str()+"\"\n"
                      +"target is: \""+subTarget.c_str()+"\"");
          }
        } // Is current record a file or a folder ?
        done = FindNext(F);                           // Look for the next file
      } // Continue to explore the current folder
      FindClose(F);                                  // Stop searching files
     
      return count;
     
    }
    NB: Question stupide, as-tu les droits d'écriture dans ton répertoire de destination ?

  6. #6
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    La création du fichier XML fonctionne dans ce répertoire alors que le déplacement des images lui ne veut pas fonctionner. Si j'arrive a créer mon fichier XML, c'est que j'ai les droits d'écriture.

    J'ai essayé de créer un nouveau dossier sur un autre disque pour voir et c'est exactement pareil.

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Points : 446
    Points
    446
    Par défaut
    Je m'en doutais bien Mais parfois on est tellement focalisé sur des éléments complexes qu'on en oublie les simples...

    As-tu essayé mon bout de code pour voir s'il copie tes images ?

  8. #8
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Je fonctionne toujours comme ca avec un maximum d'affichage de ce que je fais comme ca je peux détecter rapidement les erreurs. Là, je coince.

    Je suis en train de comprendre ton code la, Je vais l'essayer, je te tiens au courant.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    As tu essayé d'appeler GetLastError pour en savoir plus sur l'origine de l'erreur ?

  10. #10
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Non par contre avec la fonction de Patrick Seuret marche nikel.

    Cela ne peut pas venir de la traduction avec c_str car à la base mes chemins sont des AnsiString ?

  11. #11
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    la fonction GetLastError me renvoit 2 quand je l'affiche dans un ShowMessage

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    2 correspond à ERROR_FILE_NOT_FOUND

    Pourrais tu ajouter un ShowMessage(ImageProfil->Chemin.c_str()) dans le traitement d'erreur du CopyFile et faire une copie d'écran du résultat ?

  13. #13
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Quand on est bête, on peut toujours chercher l'erreur.
    Je me suis trompé de chemin.

    Ce que je veux c'est copier l'image depuis le répertoire temporaire ou j'ai extrait les fichiers vers le répertoire Images que l'utilisateur à choisit.

    Et au lieu de mettre l'image depuis le répertoire temporaire, je mets le chemin de l'image obtenu du profil c'est à dire le chemin de l'image sur le PC ou j'ai exporté le profil, Ce n’est pas étonnant que cela ne marche pas.

    Ce qui m'a mis la puce a l'oreille, c'est quand tu m’as demandé un ShowMessage de ImageProfil->Chemin.

    Ce chemin est faux puisque je le change.

    En tout cas, merci beaucoup pour ton aide josse95.
    Merci aussi à toi Patrick Seuret, car ta fonction est vraiment très pratique et je pense que je m'en resservirais.

    J'ai paumé une journée sur une erreur aussi bête, c'est rageant

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Au vu de l'erreur, je me suis douté que le chemin était mauvais. Je me suis aussi douté qu'en te demandant de l'afficher, tu allais te rendre compte de l'erreur. Souvent, on est focalisé sur une chose et on ne voit pas l'évident.
    Bonne continuation.

  15. #15
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    J'ai pourtant dans mon affichage affiché correctement, mais c'est dans la fonction elle-même que je n'ai pas mis le bon chemin.

    Par contre, tu ne saurais pas ou on peut justement trouver la liste des codes d'erreurs car cela me serait bien utile.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Si tu as le fichier win32.hlp, tu la trouves à la rubrique "Error Codes" (version anglaise).

    Si tu veux, je te l'envoie en mail.

  17. #17
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Merci, je l'ai trouvé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2007, 11h11
  2. utiliser ls et xargs pour déplacer des fichiers
    Par walrus_55 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 06/04/2007, 10h22
  3. Problème pour ouvrir des fichiers .exe et .jar via une page html
    Par coyaote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2007, 12h28
  4. [win] problème pour partager des fichiers entre 2 pc
    Par goma771 dans le forum Administration
    Réponses: 1
    Dernier message: 01/12/2005, 16h15
  5. Problème pour Télécharger des fichiers
    Par joce3000 dans le forum C++Builder
    Réponses: 8
    Dernier message: 21/01/2005, 10h30

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