Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>RealBasic Code Fehler? (BMI Rechner)

RealBasic Code Fehler? (BMI Rechner)

Mac4livede15.09.0500:19
Wird ein BMI Rechner...
Er will damit aber nicht rechnen. Lerne in der Schule VB und hab versucht den BMI Rechner nun mit RealBasic nachzubauen. Bis auf dieser Part funktionier alles einwandfrei. Hinter // stehen Komentare die nicht im Code stehen
So sieht der berechnebotton aus:

Dim BMIwert as String
Dim Gewicht as String
Dim Groesse as String

BMIwert = labBMIwert.caption // Hier soll der BMI Wert ausgegeben werden
Gewicht = labGewicht.Caption // Hier steht eine Zahl drin die per Scrollbar reingeschrieben wurde
Groesse = labGroesse.Caption// Hier steht eine Zahl drin die per Scrollbar reingeschrieben wurde


labBMIwert.caption = Round(Gewicht / (Groesse/100)^2)as Double

Kann mir jemand helfen? braucht ihr noch Infos?
0

Kommentare

Klaus Major15.09.0500:39
Ich habe keine Ahnung von Basic, aber kann Basic denn so einfach mit STRINGS(!) rechnen?
...round(Gewicht/(Groesse...))...

Falls doch, was ich stark bezweifle, habe ich auch keine Idee
0
Don Quijote15.09.0500:44
Manche Basiv Versionen liessen sich in der Eingabe und Verarbeitung automatisch beschränken, bzw. wandelt das einfach um, ob sinnvoll sei wieder dahingestellt…
0
Mac4livede15.09.0501:30
Klaus Major<br>[quote]Ich habe keine Ahnung von Basic, aber kann Basic denn so einfach mit STRINGS(!) rechnen?
das weiß ich nicht 100%. VB kann es, soweit ich es ausprobiert habe.
Wenn ich aber Gewicht und Größe als Double oder Integer deklariere gibt es immer noch probleme.
Irgendwie scheint Realbasic nicht die Werte aus dem Textfeld zu holen. Warum weiß ich noch nicht. Ich suche aber weiter nach einer Lösung. Vielleicht kann mir ja jemand hier noch weiterhelfen.
0
Rantanplan
Rantanplan15.09.0501:39
Jetzt kommt bestimmt gleich wieder vb aus seinem Loch gekrochen und zeigt mit dem Finger auf mich... Ich habe nämlich keinen Schimmer von RealBasic

Aber anderswo ist es zum Beispiel entweder so, daß die Eingabefelder zwar Strings liefern, man die aber zum Weiterverarbeiten erstmal umwandeln muß (außer man ist mit Strings zufrieden). Also wenn man weiß, daß Zahlen drin sein sollen, muß man eben den String explizit zur Zahl wandeln. In manchen GUI-Systemen findet das automatisch statt, aber das muß ja nicht für RB gelten. Oder: eventuell kannst du dem Eingabefeld mitteilen, daß es nur Zahlen akzeptieren soll und eventuell ist RB dann so schlau und wandelt selber. Aber irgendwer, entweder du explizit oder das GUI-System implizit, muß von String nach Zahl wandeln.
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
ts
ts15.09.0502:10
Hört sich irgendwie so an, als ob da nach der Val-Funktion gefragt wird.

Habe selbst ziemlich lange nichts mehr mit RB gemacht (und das wird wahrscheinlich auch so bleiben), also ist meine Antwort vielleicht nicht (mehr) richtig.
0
Mac4livede15.09.0510:14
OK, danke für die Hinweise. Werde mal schaun was ich damit anfangen kann.
0
Jan_L
Jan_L15.09.0516:28
Rechnen mit Strings ist nicht so der Bringer
BMIwert = Val(labBMIwert.caption)
Wobei dein Code unter VB tatsächlich funktionieren würde, da kann man so rechnen.
0
Jan_L
Jan_L15.09.0516:29
Achja:
labBMIwert.caption = Str(Round(Gewicht / (Groesse/100)^2)as Double)
0
Jan_L
Jan_L15.09.0516:31
Naja, und eigentlich ist es auch nicht so dolle, so viele Variablen zu deklarieren, wenn man keine einzige braucht, aber das ist VB/RB-typisch, hab ich auch lange so gemacht, weil das in meinem VB-Buch ähnlich war...
0
Jan_L
Jan_L15.09.0516:34
Moment mal, ich hab mich veröesen, du hast ja auch diue Variablen als Strings...gottogott

Machs am besten so:

labBMIwert.caption = Str(Round(Val(labGewicht.caption)) / (labGroesse.caption/100)^2))

Sollte gehn
0
Klaus Major15.09.0516:53
Na, da lag ich ja überhaupt nicht so daneben
0
species8472
species847215.09.0517:25
mac4livede

Du solltest generell zwischen "Rechnerei" und "Ein-/Ausgabe" trennen.
Rechnen (intern) mit Single oder Double und die Ausgabe dann als String.
0
Jan_L
Jan_L15.09.0517:45
Argh...:-&
Das, was ich geschrieben hab, war ja immer noch falsch...nicht mein Tag heut

labBMIwert.caption = Str(Round(Val(labGewicht.caption)) / Val((labGroesse.caption)/100)^2))

Jetzt sollte es gehn. Und wenn nicht, dann mach:
dim groesse = Val(labGroesse.caption) as integer
dim gewicht = Val(labGewicht.caption) as integer

labBMIwert.caption = Str(gewicht / groesse / 100 ^ 2)

Das ist auch gut lesbar.
0
Jan_L
Jan_L15.09.0519:17
Noch ein Tipp:
Wenn du irgendwann mal Zahlen durch ein Textfeld bekommen willst, dann kannst du mit IsNumeric(value as variant) as boolean prüfen, ob der String ne Zahl ist.

Beispiel:
if IsNumeric(textFeld.caption) then
// jetzt die Berechnung
else
MsgBox("Zahl, bidde!")
end if
0
Mac4livede15.09.0521:54
Jan_L<br>
Jetzt sollte es gehn. Und wenn nicht, dann mach:
dim groesse = Val(labGroesse.caption) as integer
dim gewicht = Val(labGewicht.caption) as integer

labBMIwert.caption = Str(gewicht / groesse / 100 ^ 2)

Das ist auch gut lesbar.

Vielen Dank für deine Hilfe!
leicht abgewandelt hat es dann funktioniert
dim Groesse as integer
dim Gewicht as integer

Groesse = Val(labGroesse.caption)
Gewicht = Val(labGewicht.caption)

labBMIwert.caption = Str(Round(Gewicht / (Groesse / 100) ^ 2))

Nun wollte ich auf 2 Nachkomma Stellen runden, aber das scheint auch ganz anders zu sein als in vb. mit ,2 hinter der klammer direkt nach dem Hoch2 klappt es nicht.
0
rofl
rofl15.09.0522:17
Schau doch mal in die Doku/Hilfe von RB, dort sollten alle Funktionen mit ihren jeweiligen Übergabeparameter erklärt sein.
0
Jan_L
Jan_L15.09.0522:18
Stimmt, hätte heißen müssen
dim Groesse as integer = Val(labGroesse.caption)
Bin grad ein bisschen raus aus RB...

Die Doku von RB ist bei Fragen wie dem Runden btw immer ein guter Ansprechpartner
0
Mac4livede15.09.0522:31
Jan_L<br>
Die Doku von RB ist bei Fragen wie dem Runden btw immer ein guter Ansprechpartner

Ich habe da aber leider nichts gefunden, da steht nur das man halt auf die volle Zahl runden kann, oder man schreibt halt statt dem ,2 einfach as Double, aber das funzt nicht. Das beißt sich scheinbar mit dem Str().
Naja, das werde ich aber (hoffentlich) noch beheben.
Aber das wichtigste funktioniert dank deiner Hilfe.
Danke nochmal
0
ts
ts15.09.0523:20
Round rundet auf Integer. Tipp: Entsprechend multiplizieren und dividieren.

U.U. rundet Format auch, wird aus der sogenannten "Language Reference" nicht ganz klar, ist aber auch einen Versuch wert.
0
Mac4livede15.09.0523:31
lol, klar Format, das ich nicht selber drauf gekommen bin. Nun ist alles gut. Freu.
Danke für eure Hilfe.
Ich habe fertig, sozusagen.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.