Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: g202e am 12.02.04 - 09:47:14
-
Das Problem dürfte bekannt sein, aber die Suche nach dem Begriff "römisch" war wenig zielführend.
Ich habe eine Art Handbuch in einer Notes-DB abgelegt, bei dem die einzelnen Kapitel römische Nummern haben. Nun ist es natürlich nicht schön, dass die Sortierung (z. B. in Ansichten) nicht so klappt wie bei den üblichen arabischen Ziffern. Als Lösung habe ich jetzt in jedes Dokument ein zusätzliches Zahlenfeld eingefügt, in dem die jeweilige arabische Ziffer (z. B. I->1, VII->7 usw.) eingetragen wird und nach diesem Feld wird dann die Ansicht sortiert. Klappt soweit ganz gut, aber im Sinne einer besseren Bedienbarkeit wäre es natürlich schön, wenn man dieses durch einen Algorithmus erledigen lassen könnte.
Gibt es sowas oder vielleicht eine andere bessere Lösung? Wie löst Ihr sowas?
-
... in Notes kenne ich noch keinen anderen Weg...
ata
-
also so nen Algorithmus sollte es an jeder Ecke im Internet geben
der erste Treffer bei Google führt zu http://lelion.de
da gibts im linken Navigator einen Link zu einem Umrechner. Schau dir einfach das Javascript von da an, und nimms in deine Maske auf, wenn das geht, oder übersetze es nach LotusScript (oder vielleicht sogar nach Formelsprache)
dann halt immer im Querysave die arabische Ziffer berechnen und in ner versteckten Spalte danach sortieren
Viel Spaß
-
Na, römisches Zeugs gehört ja zu meinen Spezialitäten ....
Da die römischen Zahlen ein komplexes System darstellen, lassen sie sich informatikmässig leider nicht so ohne weiteres behandeln. Von Sortieren kann schon gar nicht die Rede sein. Es gibt nur den von Dir beschrittenen weg, wenn man nicht dauernd umrechnen will, was nicht ganz trivial ist, da man die römischen Zahlen schliesslich als String vorliegen hat und die Wertigkeiten über einen komplexeren Algorithmus ermittelt werden können (da zum Bleistift ein I sowohl eine 1 als auch eine -1 darstellen kann, abhängig von der Position)
Wie Anton schon gesagt hat, bietet Notes keine eingebaute Funktion für eine solche Umrechnung.
-
guckst du:
Sub Click(Source As Button)
Msgbox RomToArab ("III")
End Sub
Function RomToArab(r As String) As Integer
Dim p As Integer
Dim z As String
If Len(r) = 1 Then
Select Case r
Case "I"
RomToArab = 1
Case "V"
RomToArab = 5
Case "X"
RomToArab = 10
Case "L"
RomToArab = 50
Case "C"
RomToArab = 100
Case "D"
RomToArab = 500
Case "M"
RomToArab = 1000
End Select
Elseif Len(r) = 0 Then '2. Basisklausel
RomToArab = 0
Else 'rekursive Klausel
search_max r, z, p
RomToArab = RomToArab(z) - _
RomToArab(Mid(r, 1, p - 1)) + _
RomToArab(Mid(r, p + 1, 1000))
End If
End Function
Sub search_max(r As String, z As String, p As Integer)
Dim i As Integer
Dim j As Integer
Const f = "MDCLXVI"
For i = 1 To Len(f)
For j = 1 To Len(r)
If Mid(r, j, 1) = Mid(f, i, 1) Then
p = j
z = Mid(f, i, 1)
Exit Sub
End If
Next j
Next i
End Sub
Das sollte sich doch irgendwie in die Maske integrieren lassen...
-
Da war der eknori mal wieder schneller..
Da ich mir aber auch die Arbeit gemacht habe, möchte ich es der Nachwelt hinterlassen ;D
Quelle:
http://support.microsoft.com/default.aspx?scid=kb;de;d31604 (http://support.microsoft.com/default.aspx?scid=kb;de;d31604)
Andreas
-
Ist doch immer wieder erstaunlich, wie schnell man hier in diesem Forum "geholfen wird" !
Vielen Dank. Ich denke, das reicht als Input!