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
zwei Integer Arrays vergleichen
-
- Beiträge: 64
- Registriert: 22.11.2020 20:05
- Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint Mate
zwei Integer Arrays vergleichen
--
Ideen gibt es viele - man muss sie nur haben...
Mint 18.3/19.3/21.x/LMDE5 // PureBasic 5.73 / 6.02
Ideen gibt es viele - man muss sie nur haben...
Mint 18.3/19.3/21.x/LMDE5 // PureBasic 5.73 / 6.02
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: zwei Integer Arrays vergleichen
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))
-
- Beiträge: 64
- Registriert: 22.11.2020 20:05
- Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint Mate
Re: zwei Integer Arrays vergleichen
hey Danke, funktioniert wir verrückt
Damit das letzte Element (100) auch erkannt wird, muß allerdings ArraySize(a()) um 1 erhöht werden.
Cool, so bau ich das ein
Gruß
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))
Gruß
--
Ideen gibt es viele - man muss sie nur haben...
Mint 18.3/19.3/21.x/LMDE5 // PureBasic 5.73 / 6.02
Ideen gibt es viele - man muss sie nur haben...
Mint 18.3/19.3/21.x/LMDE5 // PureBasic 5.73 / 6.02
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: zwei Integer Arrays vergleichen
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
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)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive