Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: tabama am 28.10.05 - 12:33:00

Titel: Textlisten vergleichen
Beitrag von: tabama am 28.10.05 - 12:33:00
Hallo,
probier jetzt schon Stunden an einem Problem rum und komme nicht weiter.

Ich habe zwei Textlisten und möchte eine Dritte, welche Werte der Liste 1 enthällt, die aber nicht in Liste 2 sind

Beispiel:
Liste 1 = "Montag":"Dienstag":"Mittwoch":"Donnerstag"
Liste 2 = "Dienstag":"Mittwoch"
Ergebnis: "Montag":"Donnerstag"

Am liebsten wäre mir das Ganze als Script, nicht als @

Geht das evtl. mit "permuted"? Finde dazu aber keine (für mich verständliche) Erläuterung
Titel: Re: Textlisten vergleichen
Beitrag von: Gandhi am 28.10.05 - 12:46:22
Function schnittmenge(a as variant, b as variant) as variant
dim c as variant
c(0)=""
dim i as integer
dim p as integer
dim contained as variant
for i=0 to UBound(a)
   contained=false
   for p=0 to UBound(b)
      if b(p)=a(i) then
         contained=true
         exit for
      end if
    next 'p
    if not contained then
         c=arrayappend(c, cvar(a(i)))
    end if
next 'i
schnittmenge=fulltrim(c) 'hiermit wird der Leereintrag entfernt
end function
Titel: Re: Textlisten vergleichen
Beitrag von: Gandhi am 28.10.05 - 12:49:23
Oder noch viel einfacher
dim c (Ubound(b)) as string
for i=0 to Ubound(c)
c(i)=""
next

schnittmenge=fulltrim(ArrayReplace( a, b, replaceArray ))
Titel: Re: Textlisten vergleichen
Beitrag von: tabama am 28.10.05 - 14:15:48
Hallo,

weiß zwar noch nicht so ganz wie, aber es funktioniert (2.Variante)

Hatte zunächst Problem mit dem Ubound bei dim c. Habe das dann ganz einfach durch eine Zahl ersetzt. Danach habe ich mir überlegt für was c überhaupt gebraucht wird und keine Erklärung gefunden. Daraufhin habe ich es weggelassen und es geht auch

Also:
schnittmenge = FullTrim(ArrayReplace(a,b,ReplaceArray)) genügt.
Titel: Re: Textlisten vergleichen
Beitrag von: Gandhi am 28.10.05 - 14:19:17
Mit Option declare müsstest Du es erst dimensionieren - daher die Zeilen.
Dass ArrayReplace so schmerzfrei ist und auch einen leeren Array nimmt - ist schön - damit hätte ich aber nicht gerechnet.