version=1.0.1
vdate=19.09.2014
fname=udf_compaire.bas
ns=%NAMESPACE%
fpath=/vba/functions
{{keywords>vba,function,compaire,array,object,dictionary}}
{{description>Eine Funktion zum Vergleichen. Klingt eigentlich unnötig. Doch vergleicht sie alles Mögliche. Arrays untereinander, Dictionaries, Null mit Empty etc.}}
====== [VBA] compaire() ======
//Eine Funktion zum Vergleichen. Klingt eigentlich unnötig. Doch vergleicht sie alles Mögliche.
Arrays untereinander, Dictionaries, Null mit Empty etc.
//
==Version %%version%% %%vdate%%==
{{%%fname%%|Download %%fname%% (V-%%version%%)}}
===== Definitionen =====
===== Beispiele =====
==== Einfache Werte vergleichen ====
'Ein einfacher Vergleich 2er Werte
? compaire(1234, 1234.00)
True
'Dasselbe mit Typenprüfung. Der Erste Parameter ist ein Integer, der Zweite ein Double
? compaire(1234, 1234.00, cpVarTypeStrong)
False
'Dasselbe Spiel mit einem Vergleich 0 und Null
? compaire(Null, 0)
True
? compaire(Null, 0, cpVarTypeStrong)
False
==== Arrays vergleichen ====
> Für die Ausgabe der Resultate verwendete ich die Funktion [[:vba:functions:print_r:]].
Ich vergleiche mal die 2 folgenden Arrays miteinander
print_rm array("1","2","2",array("4","5")), array(2,1,array(5.0,4.0),2)
(
[0] => 1
[1] => 2
[2] => 2
[3] => (
[0] => 4
[1] => 5
)
)
(
[0] => 2
[1] => 1
[2] => (
[0] => 5
[1] => 4
)
[3] => 2
)
'Normalverlgeich. Es wird Index und Value verglichen. Das ganze ohne Typenvergleich
? compaire(array("1","2","2",array("4","5")), array(2,1,array(5.0,4.0),2))
False
'Nur ValueVergleich, immer noch ohne Typenvergleich
? compaire(array("1","2","2",array("4","5")), array(2,1,array(5.0,4.0),2),cpArrayValuesOnly)
True
'Und jetzt mit Mit Typenvergleich
? compaire(array("1","2","2",array("4","5")), array(2,1,array(5.0,4.0),2), cpArrayValuesOnly+cpVarTypeStrong)
False
==== Dictionaries vergleichen ====
> Für die folgenden Vergleich mit Dictionaries verwende ich die Funktion [[vba:cast:cdict]] um die Dictionaries zu erstellen
> Für die Ausgabe der Resultate verwendete ich die Funktion [[:vba:functions:print_r:]].
'Die Arrays:
print_rm cDict("A", 1, "B", 2.0) , cDict("B", 2, "A", 1)
(
[A] => 1
[B] => 2
)
(
[B] => 2
[A] => 1
)
'Erster Vergleich: Check ob beide dieselben Einträge mit denselben Werten beinhaltet
? compaire(cDict("A", 1, "B", 2.0) , cDict("B", 2, "A", 1))
True
'Überprüft, ob die 2 Objekte dieselbe Instanz sind
? compaire(cDict("A", 1, "B", 2.0) , cDict("B", 2, "A", 1), cpInstanceCompaire)
False
'Zusätzlich zu den Keys und Values auf den Values noch ein Typenvergleich
? compaire(cDict("A", 1, "B", 2.0) , cDict("B", 2, "A", 1), cpVarTypeStrong)
False
===== Code =====