Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: doliman am 24.11.03 - 09:40:06
-
Hi,
hat jemand evtl. eine Routine griffbereit, die mir ein mehrdimensionales Array anhand eines Schlüssels sortieren kann?
-
Suche mal in Ulrichs Schatzkiste, da gibt es mehrere Sortier-Algorithmen, die sich sicher an Deine Bedürfnisse anpassen lassen:
http://www.eknori.de
-
Hi,
Danke!
Die CD von Eknorie habe ich erworben. Aber zu diesem Thema war nichts passendes drin. ;D
-
... dann such doch mal unter dem stichwort "quicksort". da gibt's ein paar einträge. vielleicht ist da was passendes dabei.
-
@doliman
... ich habe mir einmal eine Routine zur Sortierung einer dynamischen Tabelle geschrieben, die ein Array von Feldnamen in der Reihenfolge der Feldnamen sortiert - wäre das ungefähr das, was du suchst?
ata
-
Hi,
gebrauchen könnte ich das schon!
Habe mir aber einen Quicksort umgebastelt und hart eincodiert meine Anzahl Dimensionen, somit geht es für diesen Anwendungsfall.
Aber wenn Du Deine Entwicklung preisgeben willst, dann sage ich nicht nein.
-
... ich schreibe dir den Code zusammen, habe ihn in einer Lib drin - morgen mehr...
ata
-
Habe da eine ganz simple Lösung. ;D
Man kann unter Lotus script nämlich auch Formeln ausführen. Der code könnte wie folgt aussehen. Hier lese ich alle views einer Datenbank und gebe diese sortier als Auswahlbox aus.
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim response As Variant
Dim views As Variant
Dim i As Integer
Dim eval As Variant
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
'alle views der Datenbank auslesen
Set db = session.CurrentDatabase
views = db.Views
Forall v In views
Redim Preserve Values( i ) As String
Values( i ) = v.Name
i = i + 1
End Forall
' sortieren
Call doc.ReplaceItemValue("Values", values )
eval = Evaluate("@Sort( Values; [Ascending] )", doc )
' Anzeigen
response = ws.Prompt (PROMPT_OKCANCELLIST, _
"Select a View", _
"Select a view to delete.", _
eval(0), eval)
If Isempty (response) Then
Messagebox "User canceled", , "No views deleted"
End If
Vielleich hilft es ja! ;)
-
Sei gegrüsst im Forum, Stefan
Und vielen Dank für Deinen sofortigen guten Vorschlag. Eine kleine Bitte habe ich: Beachte doch bitte das Datum der Threads, in denen Du Antwort gibst, es ist ziemlich unwahrscheinlich, dass jemand nach 14 Monaten noch nach einer Lösung sucht. Dein Vorschlag hätte aber sicher unter Tipps und Tricks einen guten Platz gefunden (sortieren ist meistens brauchbaur) oder vielleicht auch als Vorschlag in den Best Practices (wo sich dann das Team darum kümmert, wie ein solcher Vorschlag dann realisert werden soll). Nochmals Danke für den Beitrag.
-
...
' sortieren
Call doc.ReplaceItemValue("Values", values )
eval = Evaluate("@Sort( Values; [Ascending] )", doc )
...
Hi,
mit Sicherheit ist der Code brauchbar. Allerdings nicht hier, abgesehen davon das der Fred schon etwas älter ist. Wir sind hier im Entwicklungsforum für R5 und @Sort gab's bei R5 noch nicht.
Axel
-
Und gerade wegen Evaluate und @functions hat das ganze absolut gar nichts mit MEHRDIMENSIONALEN Arrays zu tun ...
Bernhard