Seite 1 von 1
Datum umformatieren
Verfasst: 22.11.2006 17:20
von DarkSoul
irgendwie hab ich nen korken im kopf.
ich hab zwar schon vieles gebastelt, aber das billige ding hier krieg ich einfach nicht hin

:
Ich möchte eine satanistische Datumszählung programmieren.
etwa so: 22.11.XL Anno Satanas
Das '22.11.' ist noch kein problem, aber die römischen zahlen.... Das Jahr 40 entspricht 2006, 41 ist 2007 usw. und wie krieg ich das 'Anno Satanas' hinter? es geht irgendwie mit formatdate und der date() funktion.

Verfasst: 22.11.2006 17:35
von bluejoke
Öööhm, Latein-Klasse ist wirklich schon einige Zeit her, aber müsste es nicht "Anno Satanae" heißen? Heißt doch auch Anno Domini und nicht Anno Dominusus... (wär aber mal luschdig

)
Zu deiner Frage: Wenn du einen String hast der immer vom Format her tt.mm.jjjj ist, also z.B. 07.09.2006, dann nimmst du einfach den String ab der 7. Position bis zum Ende. dieser Bereich ist ja dann nur 2006 - das wandelst du dann in ne Zahl um, ziehst die scheinbar 1966 Jahre ab (also 2006-1966) und hast als Ergebnis 40. Und die vierzig musste jetzt eben in römische Ziffern umwandeln. Dazu gibts wahrscheinlich tausende Routinen auffindbar unter Google.
Gruezi
Verfasst: 22.11.2006 18:44
von jear
@Biedermeier
Hier eine einfache Lösung, die ein paar Besonderheiten außer acht lässt.
Das mit dem komischen Jahr, das kannst Du dann selbst basteln.
Code: Alles auswählen
Define.l dezimale, ix
Global Dim RZ.s(13) : Restore Romans : For ix = 1 To 13 : Read RZ(ix) : Next
Global Dim AZ.l(13) : Restore Arabics : For ix = 1 To 13 : Read AZ(ix) : Next
DataSection
Romans:
Data.s "I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"
Arabics:
Data.l 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000
EndDataSection
Procedure.s RoemischeZiffer(DZahl.l)
Protected ix.l, Ergebnis.s
If DZahl < 1 Or DZahl > 3000 : ProcedureReturn "Gab's das bei den alten Römern?" : EndIf
For ix = 13 To 1 Step -1
While DZahl => AZ(ix)
DZahl - AZ(ix)
Ergebnis + RZ(ix)
Wend
Next
ProcedureReturn Ergebnis
EndProcedure
Debug "Heute ist der : " + FormatDate("%dd.%mm.", Date()) + RoemischeZiffer(Year(Date()))
Repeat
dezimale = Val(InputRequester("Römische Zahlen", "Zahl von 1 bis 3000", "0"))
Debug Str(dezimale) + " entspricht " + RoemischeZiffer(dezimale)
Until Not dezimale
End
Verfasst: 22.11.2006 19:39
von Kaeru Gaman
bluejoke hat geschrieben:müsste es nicht "Anno Satanae" heißen?
garantiert nicht, es heißt nämlich nicht "Satana".
(verwechselst du das mit dem Gittaristen Santana?)
"Satan" ist dummerweise hebräisch, kann also auch im lateinischen nur ein Lehnwort sein.
im Vocativ heißt es "Satanas", wie aus dem Kirchenwort "Vade retro, Satanas" ersichtlich ist.
natürlich müsste es im Genitiv stehen, aber wie der aussehen muss....
ob ein lehnwort überhaupt einer bestimmten Deklination folgt,
oder simpel in der Grundform steht, ist mir allerdings auch nicht bekannt.
Verfasst: 22.11.2006 20:04
von bluejoke
Oh. Danke für die Aufklärung!
