Page 1 sur 1

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

Posté : lun. 27 janv. 2014 00:09
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

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

Posté : lun. 27 janv. 2014 11:44
par ricky
Hello,

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

Merci d'avance

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

Posté : lun. 27 janv. 2014 12:06
par Tlem
@ricky
mikell a écrit :récupérer l'index et le contenu des lignes différentes
C'est pourtant bien expliqué !!!

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

Posté : lun. 27 janv. 2014 12:09
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 ^^

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

Posté : lun. 27 janv. 2014 12:15
par ricky
Qui dit récupérer le contenu, ne dit pas forcément le comparer.

Merci pour les informations

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

Posté : lun. 27 janv. 2014 21:35
par Tlem
:shock: Heuuu, vous avez lu le titre de ce sujet ?
[Func] ArrayCompare avec récupération des lignes différentes

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

Posté : lun. 27 janv. 2014 21:53
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)

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

Posté : lun. 27 janv. 2014 22:27
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+