Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: skywook am 01.10.14 - 08:45:50

Titel: Array vergleichen
Beitrag von: skywook am 01.10.14 - 08:45:50
Hallo,

ich möchte zwei Arrays vom gleichen Typ vergleichen.

Muss ich das über eine Forall-Schleife tun oder reicht einfach:

if arrayA <> arrayB then
arrayflag = true
.....
Titel: Re: Array vergleichen
Beitrag von: umi am 01.10.14 - 08:50:49
Moin
AFAIK  bleibt da nichts anderes als zu loopen..
Titel: Re: Array vergleichen
Beitrag von: Matze84 am 01.10.14 - 08:51:54
Moin!

bin beim googlen auf Anhieb auf 2 Möglichkeiten gestoßen

http://www-10.lotus.com/ldd/46dom.nsf/869c7412fe5d56b7852569fa007826e3/7a2521a07c11cc3585256587003d1694?OpenDocument (http://www-10.lotus.com/ldd/46dom.nsf/869c7412fe5d56b7852569fa007826e3/7a2521a07c11cc3585256587003d1694?OpenDocument)

http://www.eknori.de/2007-12-26/compare-two-arrays/ (http://www.eknori.de/2007-12-26/compare-two-arrays/)


Gruß

Matze
Titel: Re: Array vergleichen
Beitrag von: Valron am 01.10.14 - 11:38:07
Hallo skywook,

wann ist der Array bei dir gleich?

Ist...

array(0) = "Hallo"
array(1) = "Welt"

das selbe wie...

array(0) = "Welt"
array(1) = "Hallo"

... oder sollte es in diesem Fall bereits als ungleich erkannt werden?
(In dem Fall die Sortierung im folgenden Beispiel weglassen)


Denn du könntest auch deine Array sortieren. (Dazu benutze ich QuickSort:
http://www-10.lotus.com/ldd/nd6forum.nsf/d6091795dfaa5b1185256a7a0048a2d0/9b89f11cf339501585257c9100477180?OpenDocument )

Nachdem deine Arrays sortiert sind, kannst du mit Hilfe von Implode die
gelieferten Strings miteinander vergleichen.


Hier ein Beispiel:
Code
Private Function bArraysAreEqual(asArray1 As Variant, asArray2 As Variant, iCompMethod As Integer) As Boolean
	
	Dim sArrayString1 As String
	Dim sArrayString2 As String 
	
	If IsArray(asArray1) And IsArray(asArray2) Then
		'//Array sortieren
		Call QuickSort(LBound(asArray1), UBound(asArray1), asArray1)
		Call QuickSort(LBound(asArray2), UBound(asArray2), asArray2)
		
		'//Erzeugen eines Strings welcher verglichen werden kann. 
		sArrayString1 = Implode(asArray1)
		sArrayString2 = Implode(asArray2)
		
		'//Vergleichen der Strings
		If StrCompare(sArrayString1, sArrayString2, iCompMethod) = 0 Then 
			bArraysAreEqual = True
		End If
	End If
	
End Function

Gruß,
Rich