Seite 1 von 1

zwei Integer Arrays vergleichen

Verfasst: 14.05.2022 19:11
von jogo
moin moin

ich erstelle zwei identische Integer-Arrays.
In einem von diesen Arrays könnten sich im Programmverlauf ein oder mehrere Werte ändern. Anzahl der Elemente bleibt konstant.
Das andere Array bleibt unberührt // dient also als Referenz.
Um zum Schluß herauszufinden, ob Werte geändert wurden, würde ich also beide Arrays Element für Element in einer Schleife vergleichen und bei der ersten Differenz abbrechen.
Bei einer Differenz wird das geänderte Array in eine Datei geschrieben, um beim nächsten Start die Daten wieder laden zu können.

Ich suche nach einer Alternative zur Vergleichs-Schleife. Die Idee ist, CompareMemory() zu nutzen:
die Adresse beider Arrays speichern: *pnt1 = array1() *pnt2 = array2()
Speichergröße: g = ArraySize(array1()) x 8 Byte
Vergleich: CompareMemory(*pn1,*pnt2, g)


Wäre das so stabil machbar?
Würde sicherlich gegenüber einer Schleife deutlich schneller sein.
Bin mir nur nicht sicher, ob das auf diese Weise gefahrlos & präzise funktioniert.
Habt ihr da Tips/Ideen/Erfahrungen?

Gruß Jörg

Re: zwei Integer Arrays vergleichen

Verfasst: 14.05.2022 19:31
von NicTheQuick
Ja, das funktioniert genau so.

Code: Alles auswählen

Dim a.i(100)
Dim b.i(100)

For i = 0 To 100
	a(i) = i
	b(i) = i
Next

Debug CompareMemory(@a(), @b(), ArraySize(a()) * SizeOf(Integer))

b(99) = 0

Debug CompareMemory(@a(), @b(), ArraySize(a()) * SizeOf(Integer))

Re: zwei Integer Arrays vergleichen

Verfasst: 14.05.2022 20:00
von jogo
hey Danke, funktioniert wir verrückt :-)
Damit das letzte Element (100) auch erkannt wird, muß allerdings ArraySize(a()) um 1 erhöht werden.

Code: Alles auswählen

Debug CompareMemory(@a(), @b(), (ArraySize(a()) + 1) * SizeOf(Integer))
Cool, so bau ich das ein :allright:

Gruß

Re: zwei Integer Arrays vergleichen

Verfasst: 15.05.2022 11:20
von NicTheQuick
Du hast Recht. Da hab ich mich vertan. Ist immer wieder eine Umstellung, dass bei Dim das letzte Element auch noch dazu gehört. Bei statischen Arrays ist das ja anders. Und in anderen Programmiersprachen auch.

Re: zwei Integer Arrays vergleichen

Verfasst: 15.05.2022 12:23
von mk-soft
Bei VBS ist es wie bei PB ;)

Code: Alles auswählen

dim text(1)

text(0) = "Hallo "
text(1) = "Welt!"
'text(2) = "Fehler"
msgbox text(0) & text(1)