Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 08.09.04 - 21:34:57
-
Hi,
ich benötige eine LS-Function, die mir Bytes in Kilobytes umwandelt.
Beispiele:
100 --> 0,1 KB
1314456 --> 1.283,6 KB
13144564567 --> 12.836.488,8 KB
Also: 1000er Trennzeichen, Rundung auf x Stellen
Habe mir überlegt, das über Select Case zu machen.
intLen = Len(lngBytesOhneNachkomma)
Select Case intLen
Case 1 To 3:
strResultOhneNachkomma = ... 'setze Wert direkt, da wir keinen 1000er Punkt brauchen
Case 4 To 6:
strResultOhneNachkomma = $Left(lngBytesOhneNachkomma, intLen - 3) & "." & $Right(lngBytesOhneNachkomma, 3)
usw.
Aber irgendwie ist das nicht toll.
Hat wer eine Idee, wie man das möglichst logisch und ohne viele Codezeilen (also ohne den in diesem Fall gruseligen Select Case....) umsetzen könnte?
Mir fehlt irgendwie die Idee hierzu...
-
Vielleicht verstehe ich ja nicht wirklich, was Du willst - aber das würde ich mit Round erledigen.
Oder: Schreib's mal genauer auf ...
Bernhard
-
Man nehme eine Zahl mit 1-n Stellen (ohne Nachkomma, ich nehme an, die hat man schon weggenommen).
Wie setze ich jetzt am einfachsten das 1000er Trennzeichen (Ergebnis = String)?
1 => "1"
100 => "100"
1000 => "1.000"
10000000000000 => "10.000.000.000.000"
usw.
Da war mein Ansatz, das mit "Select Case 'Anzahl Stellen' " umzusetzen, erscheint mir aber nicht sauber.
-
Aah ;)
Mein Vorschlag: Wert mit Round bilden, diesen dann als String umwandeln und diesen String "van Hinten" per Schleife durchlaufen und alle x Chars einen Punkt zwischensetzen (die Dimension AKA Kommastelle natürlich beachten).
HTH,
Bernhard
-
Bernhard, danke, das "van Hinten" reicht mir schon als Lösung :)
Klar, eine entsprechende Schlaife sollte da den zweck erfüllen ;)
Nun kann ich auch Byte-Größen berücksichtigen, die jenseits unserer heutigen Vorstellungen sind, und es wohl erst in 5 Jahren einen entsprechenden Namen gibt ;D
-
Ein schöner Abschluss des heutigen (aufregenden) Tages ;)
Bernhard
-
Schön :)
Nur zur Klarstellung (für Mitleser, insbesondere Sparkassen etc.):
Das Round darf nur 1mal gebildet werden, also am Anfang, da ich hier ja Nachkommastellen mit ausgebe.
lngBytes = 100000
lngKB = 100000 / 1024
lngKBRounded = Round(lngKB, 2) 'Ergibt: 97,66
lngKBRoundedTemp = Round(lngKB, 0) 'Ergibt: 98
lngKBRoundedTemp darf man also nicht nehmen, wenn man das String hier neu aufbaut (und dahinter ["," & intNachkommastelle] hängt ;) )
Ich schreibe das, weil wir hier einige Programmierer von Banken haben ;D (nicht dass bei mir dann auf dem Kontoauszug negativ-Beträge einfach aufgerundet werden :P ;D )
-
Warum so kompliziert? Dafür gibts doch die Format-Funktion, oder hab ich jetzt was völlig falsch verstanden?
print format$ (Bytes/1024,"#,##0.00"
erzeugt doch genau die gesuchte Ausgabe?
-
Volltreffer, Jens :D
Cool, hatte daran überhaupt nicht gedacht. Genau sowas habe ich gesucht.
Danke :)
-
Wie man sieht, wer sucht, der findet ;D