Guten Tag,
ich habe 2 Arrays mit jeweils knapp 20.000 Werten die überprüft werden.
Das heißt, ich gucke im Moment mit _ArraySearch nach, ob der Wert in Array1 auch in Array2 vorhanden ist.
Dieser Vorgang dauert allerdings recht lange bei mir.. daher habe ich überlegt, wie man das abkürzen könnte.
Meine Idee wäre es - man könnte ja Strings miteinander vergleichen, das ginge viel schneller.
Also beispielweise man fügt die ersten 100 Arrays zu einem String zusammen und vergleicht dann diese 200 Strings miteinander.
Spoiler anzeigen
For $i = 0 To StringLen($StringNew) step 1000
$StringShortNew = stringMid($StringNew,$i,$i+1000)
$StringShortOld = stringMid($StringOld,$i,$i+1000)
if StringCompare($StringShortNew,$StringShortOld,2) <> 0 then ; Wenn ungleich lang
consolewrite("Ungleich"&@CRLF)
Else ; wenn gleich lang
consolewrite("Gleich"&@CRLF)
endif
Next
Das geht nun aber leider nicht so einfach.. die Arrays sind alphabetisch geordnet und wenn ein neuer Artikel hinzukommt oder abgeht,
verschiebt sich ja alles.
Also habe ich überlegt, dass man es ungefähr wie folgt umsetzen müsste:
Packe die ersten 100 Werte beider Arrays jeweils in einen String - wenn gleich, ok - und die nächsten 100 checken.
Wenn nicht ok, - also StringCompare sagt,dass ein String in die eine oder andere Richtung größer ist - dann müsste er es
nach diesem Fall hin ja überprüfen.. also wenn diesem Teilabschnitt das "linke" Array größer als das "rechte" ist - dann müssen ja
alle Elemte des rechten auf's Vorhandensein im linken überprüft werden - durch "ArraySearch" würde ich dann sagen.
Wenn nun aber feststeht, dass mindestens? ein Element nicht vorhanden ist - muss im 2. Durchlauf für die nächsten 100 zusammengefassten Arrays ja etwas verändert werden.. aber irgendwie weiß ich nicht genau wie - oder habe ich einen Denkfehler?
Zu komplex? Falscher Ansatz? Würd mich freuen, wenn jemand die Zeit findet, kurz darüber nachzudenken!
Ich steh wohl ein wenig auf'm Schlauch
Beste Grüße