Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 08.09.04 - 21:34:57

Titel: Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag 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...
Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: koehlerbv am 08.09.04 - 21:41:37
Vielleicht verstehe ich ja nicht wirklich, was Du willst - aber das würde ich mit Round erledigen.
Oder: Schreib's mal genauer auf ...

Bernhard
Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: TMC am 08.09.04 - 21:45:43
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.
Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: koehlerbv am 08.09.04 - 21:52:33
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
Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: TMC am 08.09.04 - 21:57:26
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
Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: koehlerbv am 08.09.04 - 21:59:15
Ein schöner Abschluss des heutigen (aufregenden) Tages  ;)

Bernhard
Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: TMC am 08.09.04 - 22:34:31
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 )
Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: Semeaphoros am 09.09.04 - 09:53:38
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?


Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: TMC am 09.09.04 - 20:57:15
Volltreffer, Jens  :D

Cool, hatte daran überhaupt nicht gedacht. Genau sowas habe ich gesucht.

Danke  :)
Titel: Re:Logik-Frage: Bytes in KB umwandeln mit Formatierung
Beitrag von: Semeaphoros am 10.09.04 - 12:07:54
Wie man sieht, wer sucht, der findet  ;D