Datentyp erkennen

02/07/2009 - 10:40 von Helmut Schneider | Report spam
Hi,

ich möchte zwischen 2 Domains ein paar Benutzerdaten abgleichen, u.a. auch
proxyAdresses. Das Feld ist soweit ich weiss multivalued, daher hab ich mal
folgendes gebastelt:

countAddr = 0
proxyAddresses = oUserSrc.proxyAddresses
If Not IsEmpty(proxyAddresses) Then
For each proxyAddress in proxyAddresses
ReDim Preserve oUserSrcPAArr(countAddr)
oUserSrcPAArr(countAddr) = proxyAddress
countAddr = countAddr + 1
Next
countAddr = 0
proxyAddresses = oUserDest.proxyAddresses
If IsEmpty(proxyAddresses) Then
oUserDest.Put "proxyAddresses", filter(oUserSrcPAArr, "smtp:", True, 1)
OutPutFile.WriteLine "User: " & oUserSrc.cn & "; proxyAddresses changed
from '" & join(bubbleSort(filter(oUserDestPAArr, "smtp:", True, 1))) & "' to
'" & join(bubbleSort(filter(oUserSrcPAArr, "smtp:", True, 1))) & "'"
On Error Resume Next
For each proxyAddress in proxyAddresses
ReDim Preserve oUserDestPAArr(countAddr)
oUserDestPAArr(countAddr) = proxyAddress
countAddr = countAddr + 1
Next
If (join(bubbleSort(filter(oUserSrcPAArr, "smtp:", True, 1))) <>
join(bubbleSort(filter(oUserDestPAArr, "smtp:", True, 1)))) Then
oUserDest.Put "proxyAddresses", filter(oUserSrcPAArr, "smtp:", True,
1)
OutPutFile.WriteLine "User: " & oUserSrc.cn & "; proxyAddresses
changed from '" & join(bubbleSort(filter(oUserDestPAArr, "smtp:", True, 1)))
& "' to '" & join(bubbleSort(filter(oUserSrcPAArr, "smtp:", True, 1))) & "'"
End If
On Error GoTo 0
End If
End If

Das Problem ist, falls in "proxyAddresses" nur ein Wert steht (etwa nur
"SMTP:..."), erhalte ich beim for...each ein "Object not a collection". Ich
muss also wohl herausfinden, um welchen Datentyp es sich handelt, bevor ich
ein for...each mache.

Wie?

Danke und Gruß, Helmut

No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn
 

Lesen sie die antworten

#1 Pegasus [MVP]
02/07/2009 - 10:48 | Warnen spam
"Helmut Schneider" wrote in message
news:
Hi,

ich möchte zwischen 2 Domains ein paar Benutzerdaten abgleichen, u.a. auch
proxyAdresses. Das Feld ist soweit ich weiss multivalued, daher hab ich
mal folgendes gebastelt:

countAddr = 0
proxyAddresses = oUserSrc.proxyAddresses
If Not IsEmpty(proxyAddresses) Then
For each proxyAddress in proxyAddresses
ReDim Preserve oUserSrcPAArr(countAddr)
oUserSrcPAArr(countAddr) = proxyAddress
countAddr = countAddr + 1
Next
countAddr = 0
proxyAddresses = oUserDest.proxyAddresses
If IsEmpty(proxyAddresses) Then
oUserDest.Put "proxyAddresses", filter(oUserSrcPAArr, "smtp:", True,
1)
OutPutFile.WriteLine "User: " & oUserSrc.cn & "; proxyAddresses
changed from '" & join(bubbleSort(filter(oUserDestPAArr, "smtp:", True,
1))) & "' to '" & join(bubbleSort(filter(oUserSrcPAArr, "smtp:", True,
1))) & "'"
On Error Resume Next
For each proxyAddress in proxyAddresses
ReDim Preserve oUserDestPAArr(countAddr)
oUserDestPAArr(countAddr) = proxyAddress
countAddr = countAddr + 1
Next
If (join(bubbleSort(filter(oUserSrcPAArr, "smtp:", True, 1))) <>
join(bubbleSort(filter(oUserDestPAArr, "smtp:", True, 1)))) Then
oUserDest.Put "proxyAddresses", filter(oUserSrcPAArr, "smtp:", True,
1)
OutPutFile.WriteLine "User: " & oUserSrc.cn & "; proxyAddresses
changed from '" & join(bubbleSort(filter(oUserDestPAArr, "smtp:", True,
1))) & "' to '" & join(bubbleSort(filter(oUserSrcPAArr, "smtp:", True,
1))) & "'"
End If
On Error GoTo 0
End If
End If

Das Problem ist, falls in "proxyAddresses" nur ein Wert steht (etwa nur
"SMTP:..."), erhalte ich beim for...each ein "Object not a collection".
Ich muss also wohl herausfinden, um welchen Datentyp es sich handelt,
bevor ich ein for...each mache.

Wie?

Danke und Gruß, Helmut

No Swen today, my love has gone away
My mailbox stands for lorn, a symbol of the dawn



Mit den Funktionen IsArray, IsEmpty, IsObject oder VarType kannst du
herausfinden, was für eine Variable du gerade hast.

Ähnliche fragen