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

Windows Discussion :

comparer deux fichiers avec une api windows


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut comparer deux fichiers avec une api windows
    Bonjour, j'ai besion de faire un programme qui doit comparer des fichiers.Je sais qu'avec l'invite de commande il y a un instruction comp qui permet de comparer deux fichiers et je voudrais savoir s'il y a une api correspondante. Merci

  2. #2
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut Je croi pas,non !
    Salut !

    A part comparer le temps de deux fichier avec : CompareFileTime,Heu je croi pas que ça éxiste ça

    http://msdn.microsoft.com/library/de..._functions.asp

    Mais,puisque y a les API pour lire les fichiers,donc je croi que c'est facile de faire un petit algo qui compare de fichier octet par octet .


    Bonne chance !
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Compare plutôt les fichiers Mo par Mo, voire avec de plus grands blocs : Les accès disque sont plus rapides par grands blocs.

    Si j'ai bien compris, tu veux juste dire si deux fichiers de taille égale sont identiques ou non, c'est ça?

    Mon conseil pour de bonnes performances:
    • Tu alloues deux espaces d'1 Mo de mémoire avec VirtualAlloc() (obligatoire si tu utilises FILE_FLAG_NO_BUFFERING)
    • Tu ouvres les fichiers en lecture seule, avec la fonction CreateFile() et le flag FILE_FLAG_NO_BUFFERING ou FILE_FLAG_SEQUENTIAL_SCAN
    • Tu lis 1 Mo de chaque fichier
    • Tu compares avec memcmp()
    • Tu passes au Mo suivant

    J'ignore quel mode de lecture sera le plus performant, mais ce sera en tout cas plus rapide que sans aucun flag...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Merci pour les reponses. Finalement j'ai fait une fonction qui lit les fichiers par blocs de 4 octets et les compare.Puis-je espérer gagner du temps en utilisant memcmp ?

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    pas avec des blocs de 4 octets, en tout cas.

    Mais tu peux gagner du temps:
    1°) En lisant les fichiers en gros (ou au moins en précisant à Windows que tu les lis de manière séquentielle. On peut le faire aussi avec fopen(), il y a un paramètre à rajouté dans la chaîne)
    2°) En comparant en gros avec memcmp(), il y a des chances que le compilateur utilise des instructions spécifiques lorsqu'il s'agit d'opérations d'envergure sur la mémoire.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. [nasm] problème avec une API window
    Par ctrlD dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 09/12/2011, 14h25
  2. Comparer deux fichiers avec VBA
    Par Bricoltou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/11/2009, 23h23
  3. comparer un fichier avec une table
    Par mohammed_amine_wardy dans le forum SQL
    Réponses: 6
    Dernier message: 03/01/2008, 18h10
  4. API magique pour comparer deux fichiers?
    Par miria.vhg dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 11/07/2007, 11h06
  5. Réponses: 3
    Dernier message: 15/05/2007, 00h00

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