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 :

Copie de fichier


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut Copie de fichier
    Bonsoir,

    je voudrais simplifier la copie des photos de l'appareil photo vers le disque dur pour mon grand-père.
    J'ai donc pensé a faire un petit programme qui demande le numero de la première photo, le numero de la dernière photo, et le nom du dossier qu'il veut créer, sachant qu'il sera toujours dans c:\Mes documents\Mes images.

    En gros, si je rentre Juin, 12 , 45, le programme va creer le dossier Juin, puis copier les photos 12 a 45 sur le disque dur.

    Et si possible avoir la possibilité de retirer certaines photos de la copie (si je ne veux pas la 27 par exemple).

    Malheureusement, je ne sais pas du tout comment faire, je viens de me lancer dans la programmation.

    J'ai deja creer a peu près ce a quoi je pense, seulement aucun bouton n'a de fonction.
    Je met en fichier joint ce que j'ai fait. J'espère que les fichiers .pas et .dfm sont suffisants, le fichier .dcu n'est pas accepté, et je ne pense pas qu'il faille mettre ce que contient le dossier "history"

    Je vous remercie de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut


    Avec F1 et fait une recharche sur l'unite idglobal et je pense vous allez trouver qu'est ce que vous voulez...

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    J'ai fait la recherche "idglobal" dans "langage delphi" et il n'y a aucune réponse.

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    FindFirst, FindNext, TSearchRec te permet de lister un repertoire et de recuperer des informations comme la date de creation du fichier. Ideal pour generer un nom de repertoire/fichier.

    ForceDirectories de l'unitee filectrls te permet de forcer la creation des repertoire d'un chemin complet d'un fichier si ces derniers n'existent pas. A coupler avec la generation de fichier ci dessus

    TIniFile est tres pratique pour gerer un fichier de configuration d'applciation ou tu stockera par exemple le nom du dernier fichier. Vi que c'ets de l'incremental ca devrais suffire ... mais faut penser la la remise a zero manuelle ou automatique en fin de serie ...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 147
    Points : 164
    Points
    164
    Par défaut
    Créer une fonction FileSearch récurcive pour rechercher les images contenus dans un répertoire...
    Personnellement je me passerais de la phase 'je demande le premier et dernier numéro...' mieux faut faire une mosaique visuelle avec juste une flèche de déplacement du fichier.... il faut faire le plus simple possible... et visuellement c'est toujours mieux que d'entrer des numéros (ah oui je débranche l'appareil, je regarde les numéros et je cliques ah mince l'appareil n'est plus branché....)
    => faire le plus simple possible pour l'utilisateur et donc le plus conviviale possible : visuel.
    Regardes dans sur le site pour l'histoire des supports USB
    1/ détection de l'appareil photo sur le port USB
    2/ ouverture d'une fenetre avec toutes les images contenus style Adcee
    3/ transfert par défault des images vers un dossier selon la date de création des photos (juin, juillet....)
    4/ possibilité de supprimer/déplacer/imprimer les photos + apercu zoommm

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par EPJSoft
    mieux faut faire une mosaique visuelle avec juste une flèche de déplacement du fichier
    J'avais l'intention d'intégrer plus tard une visualisation des images.

    Après l'idée des numéros c'est parce que je me suis rendu compte que chaque fois que je vais chez mon grand-père pour l'aider, il sait deja quelle photo il veut copier, puisqu'il a deja regarder ces numeros a partir de l'appareil photo.

    Citation Envoyé par EPJSoft
    3/ transfert par défault des images vers un dossier selon la date de création des photos (juin, juillet....)
    Je ne pense pas que ca fasse l'affaire, puisqu'il ne trie pas ses photos en fonction de la date de prise. par exemple, il peut prendre des photos chez lui, puis partir en vacances, et reprendre d'autres photos, cela ne nécessitera que deux dossiers, et non 3.


    Au final, je pense que je vais m'en tenir a mon histoire de numero, en integrant un visualisation des photos avec ces numeros qui apparaissent en dessous.

    Cependant, je reste bloqué, puisque je ne connais toujours rien.
    Faisons simple pour commencer :
    -comment créer un bouton qui créer un dossier a un endroit voulu avec un nom choisi (?
    -comment copier un ou des fichiers d'un dossier vers un autre ?

    Je pense que c'est un début.
    Merci de votre aide.

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    lool je sens qu'on va te voir souvent ici
    Tu t'engage sur un bien vaste projet vu tes connaissances
    Mais, rien d'ironique dans tout ca, tu as du cran et j'aime ca
    Avant toute chose : Bon courage et perseverence car ton projet, si tu le mene au bout, te feras toucher a un bon paquet de fonctionnalitées sympas et tu devrais apprendre beaucoup

    Pour repondre a tes questions :
    1 - comment créer un bouton qui créer un dossier a un endroit voulu avec un nom choisi
    JE passe sur la technique de creation d'un bouton que je suppose acquise
    Passons directemetn au code de creation d'un repertoire :
    forceDirectories de l'unitee filectrl comme indique plus haut te permet de creer un repertoire avec les sous dossiers manquant.
    donc il te suffit simplement de generer un chemin complet, et de le transmettre a la fonction qui se chargera de creer l'arborescence.

    2 - comment copier un ou des fichiers d'un dossier vers un autre ?
    Pour cela tu as soit la fonction copyfile soit une technique un peu barbare mais que j'aime bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MS := TMemoryStream.Create;
    MS.LoadFromFile(source);
    MS.SAveToFile(dest);
    MS.Free;
    A bientot

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 147
    Points : 164
    Points
    164
    Par défaut
    Alors regardes ce lien

    http://www.developpez.com/delphi/faq/?page=fichier

    cela devrait au moins t'aider...

    Sur une form tu ajoutes un bouton et sur l'évènement OnClick tu ajoutes ton code 'ForceDirectories puis copies des images...

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Citation Envoyé par Clorish
    lool je sens qu'on va te voir souvent ici
    Si j'abandonne pas c'est sur.

    J'ai tester copyfile et forcedirectories, pas de problème pour le faire a partir de "truc" deja spécifié

    Par exemple si je dis juste :
    ForceDirectories('c:\Test\Essai');

    Mais si je veux faire:
    ForceDirectories('c:\Edit1.Text');
    comment je dois faire pour que Edit1.Text soit remplacé par ce qu'il y a dans Edit1 ?

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 147
    Points : 164
    Points
    164
    Par défaut
    prend Edit1.text comme une variable donc pas de quotes

    ForceDirectories(Edit1.Text);

    maintenant tu peux aussi préciser le HD

    ForceDirectories('c:/'+Edit1.Text);

    faut percévérer... pourquoi parler d'abandonner avant de commencer

  11. #11
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    D'autres fonctions bien sympas :
    ExtractFileDir, ExtractFilePAth, ExtractFilename, ChangeFileExt.

    Sinon pour creer un fichier comme il te l'a dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    str := 'c:\'+Edit1.text;
    ForceDirectories(ExtractFileDir(str));
    copyfile(source, str);

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 147
    Points : 164
    Points
    164
    Par défaut
    n'oublies pas de déclarer la variable Str en string;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <..>
    var
       Str :string;
    begin
    <..>

    Clorish a dit
    D'autres fonctions bien sympas :
    ExtractFileDir, ExtractFilePAth, ExtractFilename, ChangeFileExt.
    et regardes bien ces fonctions car elles te seront bien utiles pour gérer tes numéros de photos (extraire le numéro de la photo)

    regardes aussi Format

    S_src := 'DSCF'+Format('%.4d', [numphoto])+'.JPG';
    pour éviter de devoir taper un numéro de la photo avec les zéros.. à moins d'utiliser un MaskEdit

  13. #13
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par EPJSoft
    regardes aussi Format

    S_src := 'DSCF'+Format('%.4d', [numphoto])+'.JPG';
    pour éviter de devoir taper un numéro de la photo avec les zéros.. à moins d'utiliser un MaskEdit
    Et moi comme un c... je me suis encore frappe une fonction a moi dans ma stdlib : IntToZeroStr
    Ca ne feras que la nieme du genre ....

  14. #14
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    j'ai essayé de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    str := 'c:\'+Edit1.Text;
    ForceDirectories(ExtractFileDir(str));
    Copyfile('c:\Mes documents\TIPE.mws','str',true);
    end;
    pour avoir un bouton qui créer un dossier puis qui copie le fichier, mais il ne se passe rien.

    J'ai donc essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    str := 'c:\'+Edit1.Text;
    ForceDirectories(str);
    Copyfile('c:\Mes documents\TIPE.mws','str',true);
    end;
    mais seul le dossier est créer, mais le fichier n'est pas copier, pourquoi ?

  15. #15
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut

    Tu as ecrit : 'str' et non str
    Du coup tu prends en compte la chaine 'str' et non le contenu de la variable str

  16. #16
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Lorsque je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    str := 'c:\'+Edit1.Text;
    ForceDirectories(ExtractFileDir(str));
    Copyfile('c:\Mes documents\TIPE.mws',str);
    ca ne fonctionne pas non plus, la compilation de ne se lance lorsque je veux tester, et la ligne "copyfile" devient rouge.
    J'ai "[Pascal Erreur] Unit1.pas(31): E2010 Types incompatibles : 'string' et 'PAnsiChar'" comme message d'erreur en bas.

    Edit; je pense que ca vient du faire que str est une adresse, et que pour utiliser copyfile il faut mettre l'adresse avec a la fin \tipe.mws.
    J'ai donc essayé str+'\tipe.mws' sans plus de résultat.

  17. #17
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    et en essayant

    Result := CopyFile(PChar(NomDeFichierExistant), PChar(NouveauNomDeFichier), False);


    (trouvé sur la faq delphi : http://www.developpez.com/delphi/faq/?page=fichier).

  18. #18
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2007
    Messages : 94
    Points : 72
    Points
    72
    Par défaut
    Bon j'y arrive pas, mais je pense qu'avec la simple copyfile je pourrais m'en sortir.

    Maintenant je m'interesse a
    S_src := 'DSCF'+Format('%.4d', [numphoto])+'.JPG';
    pour copier un fichier sans mettre tout le nom.
    Je m'explique : j'ai mon fichier DSCF00052.jpg, sur ma fiche j'ai un bouton, et un edit (dans lequel je rentre le numero de la photo)
    Que dois-je rentrer "dans" le bouton pour que la photo soit copier de c:\source dans c:\destination ? (sachant qu'elle se trouve dans c:\source)
    J'ai cherche dans l'aide sur Format, mais je ne comprend rien, je trouve que c'est vraiment mal expliqué.

  19. #19
    Membre averti
    Avatar de Hauwke
    Inscrit en
    Septembre 2005
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 329
    Points : 400
    Points
    400
    Par défaut
    Bonjour,
    Non pas que je n'aime pas voir un développeur s'initier au joie d'un IDE comme Delphi ainsi qu'aux subtilités du langage Pascal mais pourquoi ne tout simplement pas utiliser un soft existant et gratuit tel que celui-ci dans un premier temps et ensuite de le cloner à son échelle?
    Toujours est-il que dans un premier temps il serait sans doute plus facile de lire un tuto sur l'acquisition d'un appareil photo à l'aide de la librairie TWain. Avec une ligne de code pour l'itération, elle va charger toutes les photos depuis l'appareil vers une grille de vignette, une case à cocher sous chaque vignette et un Dbedit pour les légendes... un bouton "Valider" et c'est fini. Au click sur le bouton, dans le répertoire général "les fotos de Pappy" sera créer un sous rep "Une partie de pêche" et ça fera la soudure dans un premier temps. Il suffira d'itérer sur les vignettes "checked" et les enregistrer dans le rep de destination.
    Ensuite viendra l'heure des options et des "Dis mon petit bonhomme, il est bien ton truc mais tu pourrais pas..." Bon courage
    Cordialement,
    Hauwke

Discussions similaires

  1. Copie de fichier sur le bureau
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/05/2005, 21h57
  2. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/12/2004, 23h39
  3. [C#] Copie de fichier via l'API
    Par slyv dans le forum Windows
    Réponses: 5
    Dernier message: 20/12/2004, 23h35
  4. [Kylix] Copie de fichier...
    Par paty.olivier dans le forum EDI
    Réponses: 1
    Dernier message: 23/06/2004, 13h55
  5. Copie de fichier
    Par Bjorn dans le forum C
    Réponses: 4
    Dernier message: 11/06/2002, 16h23

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