Seite 1 von 1
[seem to be solved] KibiByte-Rechner programmieren
Verfasst: Mo, 01.12.2014 19:28
von ChristianAC
Hallo Gemeinde,
ich habe absolut keine Ahnung von Event-Makros, bei Function-Makros sieht es anders aus (siehe mein VideoPoker,
http://www.openoffice-forum.de/viewtopic.php?f=5&t=5442. Ich möchte aus einer TextBox z.B. eine "0,5" (für Terabyte) auslesen,wenn ich auf einen Button klicke. Dann soll in eine andere TextBox (oder meinetwegen auch MsgBox; Label gibt es ja wohl nicht in OO) die wahre Terabytezahl übertragen werden. Verrechnet wird das ganze also mit Basis 1024 statt 1000 (die bekannte Mogelpackung bei Kauf eines Speichermediums).
Wie mache ich das? Wer kann mir den Quelllcode geben)?
Mit freundlichem Gruss, Christian aus Aachen
Re: KibiByte-Rechner programmieren
Verfasst: Mo, 01.12.2014 20:06
von Stephan
Label gibt es ja wohl nicht in OO)
Wie kommt man nur zu solchen Aussagen angesichts der TAtsache das Label und Textfeld auf der entsprechenden SYmbolleiste nebeneinander liegen - natürlich gibt es Label
Wer kann mir den Quelllcode geben)?
z.B.:
Code: Alles auswählen
Dim frm_rechner As Object
Dim dia_rechner As Object
Sub Main
BasicLibraries.LoadLibrary("Standard")
DialogLibraries.LoadLibrary("Standard")
frm_rechner = DialogLibraries.Standard.Dialog1
dia_rechner = CreateUnoDialog(frm_rechner)
dia_rechner.execute()
End Sub
Sub umrechnen()
tmp = dia_rechner.getControl("TextField1").text
'Komma gegen Punkt tauschen
tmp = Split(tmp, ",")
tmp = Join(tmp, ".")
dia_rechner.getControl("Label2").text = Val(tmp)/1.024
End Sub
GRuß
Stephan
Re: KibiByte-Rechner programmieren
Verfasst: Mo, 01.12.2014 20:10
von ChristianAC
Das ist ja unglaublich genaial
Genau,was ich suchte
Vielen,vielen Dank
Dann gibt es also Label, so so,da muss ich noch mal hingucken
*gelöst* (wie mache ich das)
Re: KibiByte-Rechner programmieren
Verfasst: Di, 02.12.2014 08:42
von TrueColor
ChristianAC hat geschrieben:*gelöst* (wie mache ich das)
Dein Originalposting editieren und im Thema das [gelöst]-Tag davorsetzen
Re: KibiByte-Rechner programmieren
Verfasst: Di, 02.12.2014 11:59
von clag
Hallo zusammen,
vielleicht ist es ja noch keinem aufgefallen, hier hat sich ein Fehler eingeschlichen.
Das Makro von Stephan tut zwar was ChristianAC hier anspricht
ChristianAC hat geschrieben: Verrechnet wird das ganze also mit Basis 1024 statt 1000
Code: Alles auswählen
dia_rechner.getControl("Label2").text = Val(tmp)/1.024
Was dabei heraus kommt ist der Umrechnungsfaktor für
KB in KiB ~ 1000/1024 =
0,9765625
Aber um dieses hier
ChristianAC hat geschrieben:Ich möchte aus einer TextBox z.B. eine "0,5" (für Terabyte)
zu erreichen ist es mit /1024 nicht getan, auch wenn die Eingabezeile (TB) im Dialog das suggeriert.
1 TB sind nach HD Herstellerdefinition aber 1.000.000.000.000 Byte und die sind demnach durch 1024^4 zu dividieren
was einem Faktor von 0,909494701772928 entspricht.
Die Formel in dem Makro müsste mit "1.000.000.000.000/1024^4" oder mit dem fixen Wert rechnen, also etwa so
Code: Alles auswählen
dia_rechner.getControl("Label2").text = Val(tmp)*1000000000000/1024^4
oder auch
Code: Alles auswählen
dia_rechner.getControl("Label2").text = Val(tmp)*0,909494701772928
um die gewünschte TB = TiB Umrechnung zu erreichen
Dann wird 1 TB mit korrektem Faktor als 0,909494701772928 TiB
und das genannte Beispiel "0,5" TB mit 0,454747350886464 TiB ausgegeben.
Also
1 TB ~ 0,9095 TiB
Re: KibiByte-Rechner programmieren
Verfasst: Di, 02.12.2014 14:20
von Stephan
Danke für den Einwurf.
Was dabei heraus kommt ist der Umrechnungsfaktor für KB in KiB ~ 1000/1024 =0,9765625
ja, das stimmt.
1 TB sind nach HD Herstellerdefinition aber 1.000.000.000.000 Byte und die sind demnach durch 1024^4 zu dividieren was einem Faktor von 0,909494701772928 entspricht.
da ist wohl was dran, und dessen war ich mir hier nicht bewusst.
(ich schreibe "wohl" weil ich selbst seit Langem nicht mehr nachrechne und auch nicht sicher bin ob es alle Hersteller genau nehmen.)
In anhängender Datei habe ich es mal so korrigiert wie Du es vorschlägst und einen Verweis auf den Thread hier gesetzt.
Gruß
Stephan
Re: KibiByte-Rechner programmieren
Verfasst: Di, 02.12.2014 16:39
von ChristianAC
Danke allen,
ja,ich hatte auch drüber nachgedacht und sogar entdeckt, dass ich bei einer Floppy-Diskette immer falsch gerechnet hatte (1,40625 dachte ich)
Ich dachte an eine ListBox,aber gut,lassen wir das,ich bin hochzufrieden mit dieser Lösung des für mich schon sehr verzwackten BASIC-Problems
Gruß,Chris
Re: KibiByte-Rechner programmieren
Verfasst: Di, 02.12.2014 19:06
von clag
Hallo ChristianAC,
die Trickserei fing erst bei den HD Disketten an wo aus "echten 1440 KiB" "falsche 1,44 MB" gemacht wurden es sind "echte 1,40625 MiB" da ist es ganz verzwickt weil die 1440 noch "echte" KiB waren und dann von irgendwelchen "Werbestrategen" einfach zu 1,44 MB ernannt wurden.
Der Bedarf der Differenzierung ist erst m.E. aus dieser Trickserei erwachsen, denn bis dahin war klar wenn von "KB" "MB" also Byte die Rede war, es ist das Binärsystem gemeint 2^X. Die Größenangaben meiner ersten HDs waren wie heute bei Speicherkarten noch im Binärsystem ~ 64 MB - 512 MB. Mit der ersten 1GB HD kam dann auch da die Trickserei.
siehe auch
http://de.wikipedia.org/wiki/Diskette#Formate
http://de.wikipedia.org/wiki/Byte
Bei HDs ist die Angabe der Hersteller rein Dezimal
1 KB = 1.000 Byte
1 MB = 1.000.000 Byte
1 GB = 1.000.000.000 Byte
1 TB = 1.000.000.000.000 Byte
daraus ergibt sich eine 1TB HD hat nach Binär Zählweise 2^10 = 1024 = 1KiB
Code: Alles auswählen
1.000.000.000.000 Byte / 1024^1 (2^10) = 976562500,0 KiB
1.000.000.000.000 Byte / 1024^2 (2^20) = 953674,3164 MiB
1.000.000.000.000 Byte / 1024^3 (2^30) = 931,3225746 GiB
1.000.000.000.000 Byte / 1024^4 (2^40) = 0,9094947018 TiB
hier ist ein schöner online Byte Calculator
http://www.dr-lex.be/info-stuff/bytecalc.html
Edit:
ein paar fehlende Nullen ergänzt

Re: KibiByte-Rechner programmieren
Verfasst: Mo, 08.12.2014 20:43
von ChristianAC
Liebe Leute,es scheint noch anders zu sein
clag, was Du andeutest:
es sind wirklich ~ 1,44 (zum beschreiben ungefähr nutzbare etwas weniger) bei der Diskette = 1,40625
ich rede jetzt von den Kapazitäten, die mir Windows im Kontextmenü anzeigt.
Ich habe einen Stick mit ~64000000000 Byte, da werden 59,7 GB angezeigt
Das suggeriert:
1024 Byte = 1 kByte
und dann aber: 1000 kByte = 1MByte
1000 MByte = 1GByte
1000 GByte = 1Terabyte
bei der bewussten Festplatte sieht es nämlich genauso aus:
etwas über 0,5 Billionen Byte ergeben 465 GByte
(den Rest hinterm Komma schneidet die Windows-Info übrigens (einfach) ab)
Grüssle, Chris
PS:Nee,jetzt bin ich mir wieder unsicher,oder ich bin ganz blöd

egal
Re: [seem to be solved] KibiByte-Rechner programmieren
Verfasst: Mo, 08.12.2014 22:55
von clag
Hallo ChristianAC,
deine Beobachtung ist doch völlig korrekt und entspricht den zu erwarteten Werten.

- MiB_rechnen.png (6.75 KiB) 4106 mal betrachtet
wobei man an der errechneten GiB Angabe schon sieht es lässt sich so nicht "sauber" umrechnen!
Die ehrlichste Arte wäre die Angabe der richtigen Binär Werte

- bin-rechnen.png (1.33 KiB) 4106 mal betrachtet
dh
Code: Alles auswählen
GiB .MiB .KiB .Byte
0456.0677.0162.0000 _ deine HD mit 500.000.000.000 Byte hat
0512.0000.0000.0000 _ 512 MiB = 1/2 TiB
0511.1023.1023.1023 _ 512 MiB = 1/2 TiB - 1 Byte