[seem to be solved] KibiByte-Rechner programmieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
ChristianAC
***
Beiträge: 91
Registriert: So, 30.11.2014 23:59

[seem to be solved] KibiByte-Rechner programmieren

Beitrag 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
Zuletzt geändert von ChristianAC am Mo, 08.12.2014 20:53, insgesamt 1-mal geändert.
Internetrechner mit Win 7 OO 3.0.0 sowie Notebook mit XP und AOO 4.1.1
VideoPoker-Spiel
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: KibiByte-Rechner programmieren

Beitrag 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
Dateianhänge
Umrechner.odt
(11.63 KiB) 103-mal heruntergeladen
Benutzeravatar
ChristianAC
***
Beiträge: 91
Registriert: So, 30.11.2014 23:59

Re: KibiByte-Rechner programmieren

Beitrag 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)
Internetrechner mit Win 7 OO 3.0.0 sowie Notebook mit XP und AOO 4.1.1
VideoPoker-Spiel
TrueColor
******
Beiträge: 547
Registriert: Do, 11.03.2010 11:23

Re: KibiByte-Rechner programmieren

Beitrag von TrueColor »

ChristianAC hat geschrieben:*gelöst* (wie mache ich das)
Dein Originalposting editieren und im Thema das [gelöst]-Tag davorsetzen
System:
LibO 6 + LibO 7
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: KibiByte-Rechner programmieren

Beitrag 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
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: KibiByte-Rechner programmieren

Beitrag 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
Dateianhänge
UmrechnerII.odt
(13.33 KiB) 106-mal heruntergeladen
Benutzeravatar
ChristianAC
***
Beiträge: 91
Registriert: So, 30.11.2014 23:59

Re: KibiByte-Rechner programmieren

Beitrag 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
Internetrechner mit Win 7 OO 3.0.0 sowie Notebook mit XP und AOO 4.1.1
VideoPoker-Spiel
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: KibiByte-Rechner programmieren

Beitrag 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 ;)
Zuletzt geändert von clag am Mo, 08.12.2014 22:58, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
ChristianAC
***
Beiträge: 91
Registriert: So, 30.11.2014 23:59

Re: KibiByte-Rechner programmieren

Beitrag 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
Internetrechner mit Win 7 OO 3.0.0 sowie Notebook mit XP und AOO 4.1.1
VideoPoker-Spiel
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: [seem to be solved] KibiByte-Rechner programmieren

Beitrag von clag »

Hallo ChristianAC,

deine Beobachtung ist doch völlig korrekt und entspricht den zu erwarteten Werten.
MiB_rechnen.png
MiB_rechnen.png (6.75 KiB) 4102 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
bin-rechnen.png (1.33 KiB) 4102 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
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten