Gestion d'un stock de presse...

Gestion d'un stock de presse... - C - Programmation

Marsh Posté le 12-06-2004 à 14:06:21    

Bonjour !
 
 
Les vacances commence à peine que mon père a besoin de moi pour un petit programme...argh
 
Donc pour faire bref je vais d'abord poser le décor, ce sera plus simple pour bien comprendre mes questions par la suite :
 
- Mon père a besoin d'un système qui lui permet de gérer sa presse (il a une maison de presse)
- Le but est d'avoir l'image de couverture du magazine sur un écran après avoir tapé la codification correspondant à celui-ci
- On peut trouver sur un site internet toutes les images de couverture de ces magazines, mise à jour à chaque nouvelle parution
- Le but est d'avoir les vieilles parutions en mémoire sur l'ordinateur (c'est pour gérer le vieux stock), celles-ci étant supprimées du site internet dès la parution d'un nouveau numéro
- Les images sur le site internet ont pour nom leur codification (Donc pour les retrouver sur l'ordi, on fait recherche, on tape la codif et c ok)
- Le but est donc de telecharger quotidiennement les nouvelles images à partir du site internet, pour ce job un aspirateur de site programmé automatiquement chaque nuit fait parfaitement l'affaire
- Le problème, c'est qu'en mode "update" l'aspirateur va supprimer les anciennes references déjà présentes sur l'ordi, ce qu'on ne veut pas
 
 
Voilà ce que je pense faire pour résoudre le problème :
 
- Je stock toutes les images dans un fichier "toto", ainsi que dans un fichier "temp"
- Chaque nuit l'aspirateur telecharge à nouveau toutes les images dans le fichier"temp"
- L'aspirateur ne remplaçant sur l'ordinateur que les fichiers qui ont été modifiés sur le site internet, il y aura un certain nombre de fichiers dans le repertoire "temp" qui auront pour date de création celle de la journée en cours
- Un programme se charge alors de récupérer ces fichiers la (par rapport à la date), et comme on veut les avoir dans le repertoire image alors qu'il portent le même nom que leur version précédente, il faut donc les renommer tout en gardant leur nom de départ (la codification), je pense donc rajouter à la fin du nom de l'image 2 chiffres aléatoires afin de les differencier tout en gardant l'essentiel, la codification...
Par exemple, le nom de l'image avant la modif sera 159753.jpeg, après modif ce sera 15975345.jpeg, et en faisant la recherche sous windows avec la codif 159753 on tombera bien sur les 2 images que l'on souhaite. De plus, elle pourront ainsi cohabiter dans le même répertoire "image"...
 
Donc pour conclure est-ce que ce que je souhaite faire est programmable en C ? C'est à dire récupérer la date d'un fichier, faire la comparaison avec l'horloge windows, si la date est identique renommer ce fichier avec 2 chiffres aléatoires au bout, le recopier dans le fichier "image", puis enfin supprimer ce fichier du repertoire "temp"...
 
Ce qui me dérange le plus là dedans c'est récupérer l'heure système ds le programme...
 
Voilà voilà, j'ai essayé d'être bref, je crois que c'est complètement loupé........
 
Si vous lisez ces lignes, merci d'avoir lu ce message en entier :-))
 
 
Guillaume

Reply

Marsh Posté le 12-06-2004 à 14:06:21   

Reply

Marsh Posté le 12-06-2004 à 16:47:07    

Oui tu peux parfaitement faire cela en C, même si un petit langage sans prétention comme le VB convient parfaitement pour ce genre de programmes.
 
Autrement si tu veux gérer l'aspiration toi même, tu peux aussi regarder du côté de la libcurl.
(edit : et bravo, pour une fois qu'on voit un message qui n'est pas bourré de fautes d'orthographe, ça fait du bien ! ;)


Message édité par Caedes le 12-06-2004 à 16:48:19
Reply

Marsh Posté le 12-06-2004 à 17:55:57    

Ok, et bien en voilà uen bonne nouvelle :-)
 
Pour télécharger les données je vais laisser ce travail à l'aspirateur, vu qu'il le fait bien, ça fera autant de temps de gagné...
 
Je code en C depuis 5 mois, donc je ne connais pas des masses de choses, mais je sais utiliser les nombres aléatoires, je ne connais pas les commandes de copie/suppression/renommage de fichier mais je saurai les faire je pense sans trop de problèmes une fois que je connaitrai la synthaxe... D'ailleurs, ou peut-on trouver la synthaxe de telles commandes sur le net ?
 
Par contre pour récupérer l'horloge système et les date des fichiers, je n'ai absolument aucune idée de comment le faire, et je n'ai rien trouvé sur ce sujet avec l'ami google là dessus (tout ce que j'ai trouvé se rapporte au php...)
 
Si vous avez des liens à me donner sur le sujet, ou si vous connaissez les synthaxes de ces commandes, je suis preneur !
 
Merci !
 
Guillaume

Reply

Marsh Posté le 12-06-2004 à 18:22:38    

Ah enfin g trouvé un truc bien interessant !!!
 
http://msdn.microsoft.com/library/ [...] letime.asp

Reply

Marsh Posté le 12-06-2004 à 19:10:35    

En fait il y a beaucoup plus simple que l'utilisation de la date des fichiers  :sarcastic:  
 
Je n'ai qu'a redownloader chaque nuit l'integralité des fichiers (et non pas faire une update), et comparer la taille de tous les fichiers avec les versions de la nuit precedente...!!!
Si la taille des fichiers est differente, ça je remplace l'ancien fichier par le nouveau, et c'est réglé :-)
 
Bon maintenant il me reste à trouver comment récupérer la taille d'un fichier pour fourguer ça dans un double...

Reply

Marsh Posté le 12-06-2004 à 19:51:39    

S'il crée un répertoire qui a la date comme nom, ça sépare les fichiers sans risque de superposition ?

Reply

Marsh Posté le 13-06-2004 à 16:15:36    

Le but est d'avoir tous les fichiers dans un même répertoire, donc je ne peux procéder comme ça...
 
Bon je suis en train de devenir fou, j'ai l'impression de n'avoir rien vu en C quand je vois tout ce que je dois utiliser et que je ne connais pas  :ouch: J'ai trouvé un bout de code que j'essaye d'adapter à mes besoins mais c pas gagné, il y a plein de choses que je en maîtrise pas !!!
 
Voici le code :
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. int main(int argc, char *argv[])
  5. {
  6.   WIN32_FIND_DATA FileData;
  7. HANDLE hSearch;
  8.              
  9. DWORD dwAttrs;
  10. char szDirPath[] = "c:\\TEXTRO\\";
  11. char szNewPath[MAX_PATH];
  12. char szHome[MAX_PATH];
  13. DWORD File_Size;
  14. BOOL fFinished = FALSE;
  15. // Create a new directory.  
  16. if (!CreateDirectory(szDirPath, NULL))
  17. {
  18.     printf("Couldn't create new directory." );
  19.     return;
  20. }
  21. // Start searching for .TXT files in the current directory.  
  22. hSearch = FindFirstFile("*.txt", &FileData);
  23. if (hSearch == INVALID_HANDLE_VALUE)
  24. {
  25.     printf("No .TXT files found." );
  26.     return;
  27. }
  28. // Copy each .TXT file to the new directory  
  29. // and change it to read only, if not already.  
  30. while (!fFinished)
  31. {
  32.      lstrcpy(szNewPath, szDirPath);
  33.     lstrcat(szNewPath, FileData.cFileName);
  34.     CopyFile(FileData.cFileName, szNewPath, FALSE);
  35.     File_Size = GetFileSize (FileData.cFileName, NULL);
  36.     printf("%x\n",File_Size);
  37.     if (!FindNextFile(hSearch, &FileData))
  38.     {
  39.         if (GetLastError() == ERROR_NO_MORE_FILES)
  40.         {
  41.            
  42.             fFinished = TRUE;
  43.         }
  44.         else
  45.         {
  46.             printf("Couldn't find next file." );
  47.             return;
  48.         }
  49.     }
  50. }
  51. // Close the search handle.  
  52. FindClose(hSearch);
  53.   system("PAUSE" );
  54.   return 0;
  55. }


 
J'ai rajouté ceci dans le code pour avoir la taille du fichier en cours de traitement, mais étant donné que je ne sais pas ce qu'est un DWORD, je ne sais même pas comment afficher le résultat pour vérifier si la focntion marche :
 

Code :
  1. File_Size = GetFileSize (FileData.cFileName, NULL);
  2. printf("%x\n",File_Size);


 
Donc pour résumer, au secours  :pt1cable:  
 
Guillaume

Reply

Marsh Posté le 14-06-2004 à 09:23:40    

un DWORD c'est un type (equivalent a double ), non?
 
sinon essaye avec un %d (puisque c'est une taille).
               ou un %s (si c'est une chaine de caracteres ).
 
J'espere ne pas t'avoir dis de conneries.
 
A+
               ou un %c (si c'est un caracteres).

Reply

Marsh Posté le 14-06-2004 à 09:55:40    

DWORD pour double word, un word c'est un unsigned short

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed