Autor Thema: @ismember ???  (Gelesen 2707 mal)

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
@ismember ???
« am: 19.07.06 - 10:57:06 »
Hi @all Devs,

gibt es eigentlich einen einfachen und unkomplizierten Weg um zwei Listenfelder (Arrays) zu vergleichen ? ---> also

In Feld 1 gibt es z.B. 4 Listeneinträge und es soll jetzt geprüft werden ob welcher in Feld 2 fehlt.

Mein Ansatz wäre jetzt eine forall-Schleife auf Feld 1   und dann @ismember in Feld 2 ausführen. Wobei ich noch kein LS-Code für @ismember gefunden habe.


Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: @ismember ???
« Antwort #1 am: 19.07.06 - 11:00:09 »
Hallo,

rein in LS gehen nur verschachtelte Schleifen. Aber du kannst mit evaluate Formel in LS ausführen.

Rainer
Rainer Zaske

MCSD - C#

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: @ismember ???
« Antwort #2 am: 19.07.06 - 11:02:57 »
in LS ArrayGetIndex
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: @ismember ???
« Antwort #3 am: 19.07.06 - 11:05:37 »
und mit der ArrayReplace function  könntest du in einem Rutsch alle Vorkommen von Array A in ( einer Kopie von ) Array B durch "" ersetzen. Die resultierenden Einträge sind dann die, die in A fehlen.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline 0xse

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 507
  • Geschlecht: Männlich
Re: @ismember ???
« Antwort #4 am: 19.07.06 - 11:13:05 »
Für LS: Pack dein zweites Array in eine Liste (den Arraywert als Listenindex), dann kannste mit IsElement danach suchen lasssen. Binäre Bäume sind da sehr flott :)

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: @ismember ???
« Antwort #5 am: 19.07.06 - 11:18:35 »
Danke : )

Ich werde mal die Ansätze durchgehen und dann die Lösung Posten.

Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: @ismember ???
« Antwort #6 am: 19.07.06 - 11:18:54 »
Eine Liste ist ein binärer Baum?
Ich würde sagen, das ist eher eine einfach verkettete Liste, aber kein binärer Baum.

André
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: @ismember ???
« Antwort #7 am: 19.07.06 - 11:44:42 »
Hier die Lösung : )

For l = 1 To pruefdoccol.Count
Redim Preserve liste(j)
' In der Variable Liste sind jetzt alle Feldwerte aus den Dokumenten gespeichert
liste(j) = pruefdoc.final_mo(0)
j = j + 1
Set pruefdoc  = pruefdoccol.GetNextDocument(pruefdoc)
Next

Dann.....

Forall m In Liste 2
indexresult = Arraygetindex( liste , m)
If Isnull(indexresult) Then
....

end if

Jupp..
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: @ismember ???
« Antwort #8 am: 19.07.06 - 11:48:40 »
Wenn man in einem Dokument ein item mit einer Liste füllt, kann man sehr schön mit item.Contains als Äquivalent zum @Ismember darauf zugreifen.

Ich weiß, daß wir hier in einem 6er-Forum sind: aber die Methode funktioniert ab Version 4 - und mit 5er Clients habe ich noch lange zu tun, kann also high sophisticated Funktionen für Client-Operationen nicht einsetzen.
Situs vilate in isse tabernit.

Offline 0xse

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 507
  • Geschlecht: Männlich
Re: @ismember ???
« Antwort #9 am: 19.07.06 - 11:52:07 »
Eine Liste ist ein binärer Baum?
Ich würde sagen, das ist eher eine einfach verkettete Liste, aber kein binärer Baum.

André

Das ist ja eigentlich nicht mal eine Liste sondern ein assoziatives Array. Allerdings ist die Abfrage eines Elementes über den Index sehr schnell. Dauert bei 300.000 Elementen nur minimal länger als bei 100 Elementen. Und dieser Effekt läßt mich auf einen binären Baum schließen. Alles andere wäre langsamer.

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re: @ismember ???
« Antwort #10 am: 19.07.06 - 12:55:36 »
item.contains ist keine schlechte Möglichkeit. Funktioniert leider nur dann, wenn sich das Listefeld in EINEM Dokument befindet. Wird jedoch die Liste aus vielen Dokumenten zusammengesammelt, dann klappt das so schon nicht mehr. Die Index-Lösung ist wirklich sehr schön. : )
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz