Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: DAU-in am 20.04.09 - 11:02:43

Titel: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: DAU-in am 20.04.09 - 11:02:43
Ich steh auf dem Schlauch:

Für den Vergleich zweier Dokumente stelle ich eine Abgleichsliste auf, d.h.,
wenn Dok2 im Feld "ab" verschieden ist von Dok1, erstelle ich in der Liste ein
Listenelement mit ListTag "ab" und dem Feldwert in Dok1.
Die Liste wird danach weiterverwurstet.
Das Problem: Wenn die Dokumente dieselben Werte in den gleichnamigen Feldern haben,
enthält die Liste kein einziges Listenelement.
Wie kann ich das abfragen?

Is nothing liefert Typemismatch, IsList, IsArray und Isempty greifen nicht.

???

Notes 8.0 auf Windows Vista.

Grüsse

Dau-in
Titel: Re: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: BigWim am 20.04.09 - 11:20:16
Wenn ich das richtig verstanden habe, tritt das Problem auf, wenn die Dokumente identisch sind und keine Liste erstellt wurde.

In diesem Fall arbeite ich mit einer Hilfsvariable. Also in unreine geschrieben.

Code
Dim bIsDokDiff as boolean
bIsDokDiff = false

if dok1 <> dok2 then
  bIsDokDiff = true
' Liste erstellen
endif

if bIsDokDiff = true then
'  Doks unterschiedlich. Verwurste Liste
endif

Viele Grüße
Markus

PS: Bin gespannt, ob es noch etwas eleganteres gibt ....
Titel: Re: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: DAU-in am 20.04.09 - 11:23:30
Ich habe ein Pseudoelement eingeführt, das in der weiteren Routine nicht mehr berücksichtigt wird.
Aber ich würde gerne so etwas wie 'hasElements' abfragen.
Titel: Re: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: jBubbleBoy am 20.04.09 - 11:24:55
Listen sind nicht dafür Konzeptioniert eine Anzahl von Werten zu verwalten. Wenn du deine Liste verarbeitest, wahrscheinlich mit:
forall x in "liste"
dann bekommst Du doch mit ob etwas vorhanden ist oder nicht.
Titel: Re: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: DAU-in am 20.04.09 - 11:27:08
ich will die Liste direkt weiterreichen in eine andere Routine.
und das knallt dann.
Titel: Re: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: BigWim am 20.04.09 - 11:31:07
Hast Du es schon mal mit IsList und IsElement probiert?

Mit Listen habe ich persönlich (noch) nicht viel Erfahrung. Das habe ich in der Hilfe gefunden.

Zitat
IsList( listName ) returns True (-1) or False (0) depending on whether listName is a list.

Zitat
IsElement( listName ( stringExpr )) returns True (-1) or False (0) depending on whether stringExpr is a list tag in listName. There are a variety of circumstances under which you might want to test for the existence of a particular list tag in a list. Two cases are:
You want to add a new element to a list and want to make sure that the list tag you plan to use isn’t already in use (because if it is, and you used it in an assignment statement, you would overwrite the element that it identifies).
You want to refer to an element and want to make sure that the element exists before doing so (because if you refer to a nonexistent list tag, LotusScript returns an error).
Titel: Re: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: Werner Götz am 20.04.09 - 11:34:00
Vielleicht hilft das weiter?
Code
Function HasElements(lst As Variant) As Boolean
	Forall e In lst
		HasElements = True
		Exit Function
	End Forall
	HasElements = False
End Function

-Werner
Titel: Re: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: DAU-in am 20.04.09 - 11:35:30
IsList gibt true zurück, weil die Variable als Liste definiert ist.
Das Abfragen der Listtags bringt auch nichts, weil die erst definiert werden, wenn ein Unterschied besteht.
Titel: Re: Wie Liste auf Vorhandensein von Listenelementen prüfen?
Beitrag von: DAU-in am 20.04.09 - 11:36:34
Vielleicht hilft das weiter?
Code
Function HasElements(lst As Variant) As Boolean
	Forall e In lst
		HasElements = True
		Exit Function
	End Forall
	HasElements = False
End Function

-Werner


Die Firma dankt.