Autor Thema: Vergleich von zwei Variants  (Gelesen 1179 mal)

Offline Hevelmann

  • Frischling
  • *
  • Beiträge: 43
  • Geschlecht: Männlich
Vergleich von zwei Variants
« am: 06.08.03 - 16:55:16 »
Hallo Notesgemeinde,

ich zwei Variablen vom Typ Variant und übergebe mehrere Werte mittels:

Sub Initialize

Dim vA as Varinat
Dim vB as Varinat
Dim vC as Variant

...

vA = Evaluate ( {@DbColumn( "" ; "" ; "folder1" ; 1 )} )
vB = Evaluate ( {@DbColumn( "" ; "" ; "folder2" ; 1 )} )

...

End Sub


ich möchte jetzt diese zwei Variablen miteinander vergleichen und eine dritte Variable vC erstellen, die alle Werte enthält, die sowohl in vA als auch in vB vorkommen. Also ähnlich der Funktion @Keywords.

Kann mir jemand weiterhelfen. Ich bin für jede Antwort dankbar.

Gruss Hevelmann
« Letzte Änderung: 06.08.03 - 16:55:44 von Hevelmann »

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:Vergleich von zwei Variants
« Antwort #1 am: 06.08.03 - 18:11:02 »
 ;) Aus "Programmieren für Anfänger".  ;)

Vergleich von zwei Variants mit der Ausgabe der gleichen Treffer in eine dritte Variant

for i = 0 to ubound(VarA)
 for j =0 to ubound(VarB)
  if VarA(i) =VarB(j) then
   if Ubound(VarC) > 0 then
    Redim Preserve VarC(Ubound(VarC)+1)
   end if
   VarC(Ubound(VarC)) = VarA(i)
   Exit For
  end if
 next
next

Ohne Gewähr für Syntax Richtigkeit

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Glombi

  • Gast
Re:Vergleich von zwei Variants
« Antwort #2 am: 06.08.03 - 21:25:10 »
Hi,
ich denke die Schulbuchlösung ist der reinste Performancekiller, wegen der 2 Schleifen und dem Redim Preserve.

Falls das ganze in einem Dokument gemacht wird (sonst erstellt man eben schnell eines), ginge auch das:

vA = Evaluate ( {@DbColumn( "" ; "" ; "folder1" ; 1 )} )
vB = Evaluate ( {@DbColumn( "" ; "" ; "folder2" ; 1 )} )

if isArray(vA) and IsArray(vB) then
doc.vA = vA
doc.vB = vB

dim ret_eval as Variant
ret_eval = Evaluate( |FIELD vC := @Keyword(vA;vB);@True|, doc)
end if

Dann steht in vC das gesuchte.

Andreas


Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:Vergleich von zwei Variants
« Antwort #3 am: 06.08.03 - 23:10:10 »
 ;)
Ich geb ja zu das Glombi's Lösung schneller ist. Zumindest bei größeren Arrays
 ;)
Ich geb auch zu das man diese Lösung noch optimieren kann. Zum Beispiel kann man sich eine Schleife sparen und das Redim Preserve kann man auch in die Tonne klopfen wenn man anstelle des zweiten Arrays einen String nimmt und dann mit dem hier
gesuchterString = strLeft(strRight(deinString,"name= ")," attribut=")
(Stammt übrigen auch von Glombi), vergleicht und in einen zweiten String wegschreibt. Zum Schluß braucht man dann nur noch einen Explode auf den String und man hat wieder ein Array. Ist zwar ein bischen mehr script, dürfte aber die Performance Vorteile bei größeren Arrays egalisieren.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Hevelmann

  • Frischling
  • *
  • Beiträge: 43
  • Geschlecht: Männlich
Re:Vergleich von zwei Variants
« Antwort #4 am: 07.08.03 - 11:12:03 »
Danke für die schnelle Hilfe, Ihr habt mir sehr geholfen.

Gruss Hevelmann

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz