[Func] ArrayCompare avec récupération des lignes différentes

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

[Func] ArrayCompare avec récupération des lignes différentes

#1

Message par mikell »

Hello

Cette fonction permet de comparer 2 arrays et de récupérer l'index et le contenu des lignes différentes
Utilisée pour comparer 2 fichiers, elle retourne le numéro des lignes différentes et leur contenu
3 options possibles :
- récupérer les éléments de l'array 1 qui ne figurent pas dans l'array 2
- récupérer les éléments de l'array 2 qui ne figurent pas dans l'array 1
- récupérer les deux

Elle utilise une BDD Sqlite mémoire temporaire pour limiter le temps de traitement en cas de grosses arrays ou de gros fichiers (plusieurs milliers de lignes) donc attention de bien conserver les includes
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [Func] ArrayCompare avec récupération des lignes différe

#2

Message par ricky »

Hello,

merci pour le partage, mais j'ai une question, ça compare juste la taille ou aussi le contenu?

Merci d'avance
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] ArrayCompare avec récupération des lignes différe

#3

Message par Tlem »

@ricky
mikell a écrit :récupérer l'index et le contenu des lignes différentes
C'est pourtant bien expliqué !!!
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Func] ArrayCompare avec récupération des lignes différe

#4

Message par mikell »

Moui...
C'est fait spécifiquement pour récupérer des informations plus précises sur les différences de contenu
Pour comparer les tailles, il suffit d'utiliser FileGetSize pour les fichiers et une comparaison d'UBound pour les arrays

NB : un test de la fonction le montre de suite ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [Func] ArrayCompare avec récupération des lignes différe

#5

Message par ricky »

Qui dit récupérer le contenu, ne dit pas forcément le comparer.

Merci pour les informations
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Func] ArrayCompare avec récupération des lignes différe

#6

Message par Tlem »

:shock: Heuuu, vous avez lu le titre de ce sujet ?
[Func] ArrayCompare avec récupération des lignes différentes
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
gjmarc
Niveau 1
Niveau 1
Messages : 1
Enregistré le : dim. 30 déc. 2012 21:15
Localisation : Seine et Marne
Status : Hors ligne

Re: [Func] ArrayCompare avec récupération des lignes différe

#7

Message par gjmarc »

Bonjour,

Merci pour la fonction.
J'ai rencontré une erreur sur la fin des lignes :
_SQLite_GetTable2d(-1, "SELECT * FROM table1 WHERE items1 NOT IN (SELECT items2 FROM table2) ;", $array, 0, 0)

que j'ai remplacées par :
_SQLite_GetTable2d(-1, "SELECT * FROM table1 WHERE items1 NOT IN (SELECT items2 FROM table2) ;", $array, $iRows, $iColumns)

bien entendu précédées d'une déclaration :
Local $iRows, $iColumns

Et plus d'erreur.
Est ce la version d'Autoit ?
Pour info Autoit V3.3.10.2 sur XP

Un spécial j'aime pour cette syntaxe "Local $s = ($n > $m) ? $n : $m"

JMG (premier post)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [Func] ArrayCompare avec récupération des lignes différe

#8

Message par mikell »

Bienvenue sur le forum et merci pour la remarque (1er post édité)

Et non, c'est pas la faute d'Autoit, c'est la faute du chat qui s'est encore fait avoir - par pure flemme - avec des paramètres en ByRef :mrgreen:
D'ailleurs faudrait ben que je fasse la gestion d'erreur, aussi ...

NB : Cette syntaxe "Local $s = ($n > $m) ? $n : $m" ne marche que sur les versions Autoit 3.3.10+
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre