PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funktion und Variablentyp



steep
19.07.2011, 23:40
Warum geht das nicht? Wenn ich Byte anstelle von Single nehme funktioniert es, allerdings nur mit ganzen Zahlen bis 255. Ich will aber auch grössere Zahlen mit Kommastellen addieren.
Kann mir das bitte jemand verständlich erklären?

Dim B1 As Single
Dim B2 As Single
Dim B3 As Word
Declare Function Testfunktion(byval A As Single , Byval B As Single) As Word
Do
Input "Zahl: " , B1
Input "Zahl: " , B2
B3 = Testfunktion(b1 , B2)
Print "--------------------------"
Print "Ergebniss: " ; B3
Print "=========================="
Print Chr(13)
Loop
End

'Funktionen und Prozeduren
Function Testfunktion(a As Single , B As Single) As Word
Testfunktion = A + B
End Function

PicNick
20.07.2011, 07:22
Du solltest probieren, B3 und Testfunktion ebenfalls als "single" zu deklarieren und definieren
Oder aber alles als word oder integer

auf jeden Fall aber gleiche typen

Ich kann hier im moment nicht testen, an welcher stelle genau Bascom da ins konversions-schleudern kommt.

da_reefer
20.07.2011, 12:05
Hallo,

was genau funktioniert denn nicht? Die Funktion liefert das erwartete Ergebnis zurück - eine Ganzzahl (Word).
Dabei wird die Kommastelle aber nicht gerundet, sondern einfach abgeschnitten - willst du eine gerundete Ganzzahl, müsstest du zum Ergebnis noch 0,5 addieren.
Willst du auch die Kommastelle haben, musst du die Funktion auch als Single oder Double deklarieren.

mfg

steep
20.07.2011, 17:36
Erstmal Danke für die Hilfe.

Das obige Programm funktionierte nur mit Byte. Bei Singel kam nur Müll raus. zbsp. bei Zahl B1 = 10 und Zahl B2 = 20 war dann Variable A = 0 und B= 19.999.. und B3 = 0.

Habe, da ich ja ohne euch eh nicht weiterkomme, aus Langeweile mal die im Lernpaket enthaltene Bascom Demo 1.11.9.1 deinstalliert und die neue Bascom Demo 2.0.5.0 von MCS heruntergeladen und installiert.

Und jetzt geht der Code plötzlich. .
Ist zum Wahnsinig werden, erst hat das von Franzis mitgelieferte USB Kabel eine Macke zeitweiliger Mikrounterbruch im Kabel (vorheriger Post) und jetzt noch das mit der Bascom Version.