Sign in to follow this  
Followers 0
airrs

[SOLVED]compare two lists and add different strings

6 posts in this topic

#1 ·  Posted (edited)

hi guys,

i have a little problem with a function here. i have two *.ini files, both filled with different and similar strings.

now i want to compare the two lists. if there is a string which isn't in the list, the string should be added to the list.

Func _BuIm()
local $length
$BuImOld = IniReadSection("Directory of the *.ini file","SectionName")
$import = FileOpenDialog("Open Bu List", "Directory of the New file", "(*.ini)")
$BuImNew = IniReadSection($import, "SectionName")
For $k = 1 to $BuImOld[0][0]
     $length = $length + 1
Next

$length = $length - 1 ; it starts with one but my list starts with 0

For $i = 1 to $BuImNew[0][0]
     For $j = 1 to $BuImOld[0][0]
If $BuImNew[$i][1] <> $BuImOld [$j][1] Then
$length = $length + 1
$x = $BuImNew[$i][1]
_IniWrite("Directory of the *.ini file", "sectionName", $length, $x)
ElseIf $BuImNew[$i][1] == $BuImOld [$j][1] Then
             ExitLoop
         EndIf
     Next
Next
_MainWin()
EndFunc

the function just do weird things and i dont know where the mistake is.

can you please help me?

Edited by airrs

Share this post


Link to post
Share on other sites



My 2c: files may differ in several ways, and it's quite complex to write a tool that sees the differences like yours.

I would look at a tool like the free WinMerge, which also has a CLI and can be run with RunWait(). This tool has a myriad of options and you should be able to get a merged file, or a diff file out.

If WinMerge won't do it, there are other alternatives

At least I personally prefer to jump the fence to get the job done. And try not to re-invent the wheel.


I am just a hobby programmer, and nothing great to publish right now.

Share this post


Link to post
Share on other sites

Do you mean something like that?

#include <Array.au3>

Global $aList_1[5] = ["Car", "Zebra", "Computer", "AutoIt", "Forum"]
Global $aList_2[4] = ["Red", "Computer", "Forum", "Tiger"]

$aMerged = MergeDiff($aList_1, $aList_2)
_ArrayDisplay($aMerged)

Func MergeDiff($a1, $a2)
    Local $ub1 = UBound($a1) - 1
    Local $ub2 = UBound($a2) - 1
    Local $aNew[$ub1 + $ub2 + 2]
    Local $j = 0
    For $i = 0 To $ub1
        $aNew[$j] = $a1[$i]
        $j += 1
    Next
    For $i = 0 To $ub2
        $aNew[$j] = $a2[$i]
        $j += 1
    Next
    Return _ArrayUnique($aNew)
EndFunc

Br,

UEZ


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

Stealing UEZ's example, you could also just use the _ArrayConcatenate() function and end up with:

#include <Array.au3>

Global $aList_1[5] = ["Car", "Zebra", "Computer", "AutoIt", "Forum"]
Global $aList_2[4] = ["Red", "Computer", "Forum", "Tiger"]

_ArrayConcatenate($aList_1, $aList_2)
$aList_1 = _ArrayUnique($aList_1)
_ArrayDisplay($aList_1)

Share this post


Link to post
Share on other sites

I didn't use _ArrayConcatenate() because I didn't want to overwrite one of the arrays! ;)

Br,

UEZ


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

... because I didn't want to overwrite one of the arrays! ;)...

but i do :) i have a list with data which must be changed sometimes. if someone from my team is

on vacation or ill and a change happened in this time, he just need an exported list (export function already works) to import in the existing list.

so on list needs to be overwritten.

@Spiff59, thanks thats exactly what i needed.

... And try not to re-invent the wheel.

yeah, but just using other programs isn't very flexible and kinda lazy

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0