begin process at 2012 02 11 20:11:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

Copier des images sélectionnés par une liste


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Copier des images sélectionnés par une liste

mardi 11 mars 2008 à 11:19:59 | Copier des images sélectionnés par une liste

kididouille

Bonjour, j'ai un pb, je dois réaliser un programme qui copie des images d'un dossier vers un autre. Les images choisies sont issues d'une liste en txt. Ca a l'air très simple à première vue mais je galère:
J'ai donc un dossier source contenant pleins d'images (+de 10000) et un dossier destination vide. un fichier texte où sont inscrit les noms des images que je dois récupérer dans le dossier source, ces noms d'image sont séparés par des retours chariots et la fin de la liste est marqués par un espace.  J'arrive à récupérer le chemin source, le chemin destination, à y rajouter le nom récupéré dans la liste et de copier l'image. Mais cela uniquement pour des noms d'images de 6 caractères, pas 7. je ne comprend pas pourquoi! Je cherche le début de mon nom d'image en parcourant ma liste à la recherche d'une lettre majuscule (toute ma base d'image commence par une lettre majuscule) et je signale la fin de mon nom lorsque je rencontre un retour chariot, pourtant pour des images sur 7 caractères visual me renvoie un "Accès Violation" et demande la SBHEAP.c
Please Help!

voici mon code:

 CFile Fichier;
 char NomImage[10];
 char ListeImage[20000];
 char NomCheminSource[500]; char NomCheminDestination[500];
 long TailleCheminSource,TailleCheminDestination;
 long TailleNomImage,FinFichier;
 long DebutNom,FinNom;
 char* NomImageReduit;
int Image[225000];
 int m;
 Fichier.Open(NomFichier,CFile::modeRead);               
 Fichier.Read(&ListeImage,10000*sizeof(char));      //ici on recupere la liste des images à copier
 Fichier.Close();
 DebutNom=0; FinNom=0; TailleNomImage=7; FinFichier=1; // valeur par défaut


Auparavant on a recupéré les chemins sources et destinations jusqu'au '\' il ne reste qu'à recuperer le nom de l'image lui rajouter .bmp et on peut aller la chercher...


  for(int k=0;k<20000;k=k+TailleNomImage)
  {
  if (FinFichier==1){

   while((ListeImage[k]<64)||(ListeImage[k]>90)) {k++;}   //tant qu'on ne tombe pas sur le debut d'un nom on incrémente
   
   if ((ListeImage[k]>64)&&(ListeImage[k]<90))
   {
    // si on es au debut du nom d'une image(LETTRE MAJ) alors on cherche la fin
    m=k;
    DebutNom=k;
    while(ListeImage[m+1]!='\n')         //tant que pas retour chariot
    {
        if(ListeImage[m+1]!=-52)            //si pas fin fichier
        {
              NomImage[m-k]=ListeImage[m];
              FinNom=m; //on es a la fin d'un nom pas du fichier
              m++;
        }
        else
        {
              ListeImage[m+1]='\n';  //on es a la fin du fichier: presence d'un "espace"
              NomImage[m-k]=ListeImage[m];
              FinFichier=0;
              FinNom=m;
        }
       TailleNomImage=FinNom-DebutNom+1;
    } //fin while
   } //fin if     
   
// a ce stade on a recupéré le nom et la taille de notre image

  for(i=TailleCheminSource+1;i<TailleCheminSource+1+TailleNomImage;i++)
  { 
   NomCheminSource[i]=NomImage[i-(TailleCheminSource+1)];
  }

  NomCheminSource[TailleCheminSource+TailleNomImage+1]='.';
  NomCheminSource[TailleCheminSource+TailleNomImage+2]='b';
  NomCheminSource[TailleCheminSource+TailleNomImage+3]='m';
  NomCheminSource[TailleCheminSource+TailleNomImage+4]='p';

  char *CheminSourceReduit;
  CheminSourceReduit=new char [TailleCheminSource+TailleNomImage-4];
  for (i=0;i<TailleCheminSource+TailleNomImage+5;i++){CheminSourceReduit[i]=NomCheminSource[i];}
  CString NomSource(CheminSourceReduit);
  CheminSourceReduit=NULL;   
  delete [] CheminSourceReduit;
  
  int Image[225000];
  
  if( Fichier.Open(NomSource,CFile::modeRead))
  {
   Fichier.Read(&Image,sizeof (Image));
   Fichier.Close();
  } //on a le contenu de l'image voulu dans Image

  for(i=TailleCheminDestination+1;i<TailleCheminDestination+1+TailleNomImage;i++)
  { 
   NomCheminDestination[i]=NomImage[i-(TailleCheminDestination+1)];
  }

  NomCheminDestination[TailleCheminDestination+TailleNomImage+1]='.';
  NomCheminDestination[TailleCheminDestination+TailleNomImage+2]='b';
  NomCheminDestination[TailleCheminDestination+TailleNomImage+3]='m';
  NomCheminDestination[TailleCheminDestination+TailleNomImage+4]='p';

  char *CheminDestinationReduit;
  CheminDestinationReduit=new char [TailleCheminDestination+TailleNomImage-4];
  for (i=0;i<TailleCheminDestination+TailleNomImage+5;i++){CheminDestinationReduit[i]=NomCheminDestination[i];}
  CString NomDestination(CheminDestinationReduit);
  CheminDestinationReduit=NULL;
  delete CheminDestinationReduit;

  Fichier.Open(NomDestination,CFile::modeCreate);
  Fichier.Close();
  Fichier.Open(NomDestination,CFile::modeWrite);
  Fichier.Write(&Image,sizeof(Image));
  Fichier.Close();

 }
}



Cette discussion est classée dans : fichier, image, char, taillenomimage, listeimage


Répondre à ce message

Sujets en rapport avec ce message

écriture fichier [ par thorodin ] Salut,Quand j'enregiste une jpeg sur la caméra et que je la transfère par filezilla  le fichier  édité  avec  hexedit  donne (pour la première ligne) listes chainées [ par tony_77 ] bonjour,J'ai un projet à faire en C++, je suis débutant.J'ai choisi d'utiliser une liste chainée que je sauvegarde ds un fichier .txt.Il faut donc que lire une ligne dans un fichier txt et extraire les champs entre ; [ par drcmomo ] Bonjour!!je vous en prie aidez moi svp!!j'ecris ce code qui permet de lire un fichier txt, apres l'ouverture je dois lire une ligne et extraire les do ouvrir plusieur fichierx textes [ par seignseifer ] Bonjour, alors je voudrais ouvrir plusieurs fichier textes pour mon programme. J'ai un peu avance mais je bloque sur quelquechose. Je fais une boucle URGENT : pb de conexion avec mysql_real_connect [ par Stephworlds ] salut a tousC'est éxtrémement urgent.Je doit me connecter sur une base de donées distante. Mon programme compile. Mais lorsque je lance l'appli la con Malloc et mémoire affectée [ par Chop_chop ] Bonjour,J'ai un petit soucis quant à l'allocation de mémoire pour un char* avec l'utilisation de malloc.Voici mon code (bien allégé) :[CODE] char *fic comparaison entre deux images [ par nicolovitch ] Bonjour à tous,   <p class="MsoNormal" style="MAR [Langage C] Obtenir une ligne d'un fichier (scanf%[^X]) [ par Thranduil ] Bonjour, j'essaie de créer une fonction qui doit lire une ligne entière d'un fichier texte (donc jusqu'au '\n' mais ça ne marche pas. (C'est la même q uvrir un image dont le chemin est l'un des élément dun fichier XML [ par thespartan ] 'ai écris un petit programme C parsant des fichiers texte. J'appelle l'exécutable : a.out TOTO/ en lui donnant le nom du répertoire que je souhaite tr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales