PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rechnung in Boolschem Ausdruck



Static
25.09.2005, 14:36
Ich frage mich schon länger, ob es in Bascom tatsächlich keine möglichkeit gibt in der "Bedingung" von einer If Verzweigung z.b ein Produkt aus 2 Zahlen mit einer anderen zu vergleichen.
Also z.B:

If I*K > 0 Then ... EndIf
Da bekomme ich immer als Fehlermeldung "3 Paramteres expected"
Muss das anders geschrieben werden, oder geht so etwas einfach nicht?

Des weiteren wundere ich mich warum Bascom mit der Parameterübergabe an Subs nicht klar kommt. Ich habe z.B. eine Sub Goxy(xn As Integer , Yn As Integer), welche auch schon länger sehr gut funktioniert hat. Doch nachdem ich ein bisschen Code und ein paar Variablen mehr hinzugefügt habe, funktioniert die Paramterübergabe von Xn und Yn nicht mehr. D.h. es kommt nur noch 0 an. Liegt das daran, dass der Ram irgendwann zu klein wird und Bascom mir keine Warnung gibt?
Dazu muss ich sagen, dass ich einen Mega32 benutze und mein Programm schon ~1000 Zeilen hat.

Ich würde mich sehr freuen, wenn mir da jemand einen Tip geben kann

PicNick
25.09.2005, 16:56
1) du mußt wohl i*k in eine temporäre Variable legen und diese dann zum Vergleichen nehmen.
temp = i * k
if temp > 0 then ....

sub-Parameter: du mußt die Werte für
$HWSTACK =
$SWSTACK =
erhöhen, mit den defaults kommt man nicht weit.
( --> Help)

hrei
25.09.2005, 17:02
Hallo!


Ich frage mich schon länger, ob es in Bascom tatsächlich keine möglichkeit gibt in der "Bedingung" von einer If Verzweigung z.b ein Produkt aus 2 Zahlen mit einer anderen zu vergleichen.
Also z.B:

If I*K > 0 Then ... EndIf
Da bekomme ich immer als Fehlermeldung "3 Paramteres expected"
Muss das anders geschrieben werden, oder geht so etwas einfach nicht?


So geht das in Bascom leider nicht. Leider kann Bascom mit mathematischen Ausdrücken nichts anfangen.
Es gilt:
Immer hübsch eine Rechenoperation pro Zeile. In Deinem Fall sähe das dann so aus:

Temp = K * I
If Temp > 0 Then
......
End If
......



...... funktioniert die Paramterübergabe von Xn und Yn nicht mehr. D.h. es kommt nur noch 0 an. Liegt das daran, dass der Ram irgendwann zu klein wird und Bascom mir keine Warnung gibt?
Dazu muss ich sagen, dass ich einen Mega32 benutze und mein Programm schon ~1000 Zeilen hat.


Da sollte das vergrößern von Hard- Soft- und Framestack helfen (in den Optionen).

Viele Grüße
Henrik

25.09.2005, 17:07
danke für eure Hilfe. Echt schade, dass man immer nur eine Rechenoperation machen kann, sonst wär mein Programm bestimmt 30% kürzer und schöner lol.
Mal sehn ob das mit der Sub so funktioniert...

hrei
25.09.2005, 17:07
Upps, da haben Picknick und meinereiner zur gleichen Zeit das gleiche getippt :-).

Grüße von einem zu langsamen Henrik

hrei
25.09.2005, 17:13
danke für eure Hilfe. Echt schade, dass man immer nur eine Rechenoperation machen kann, sonst wär mein Programm bestimmt 30% kürzer und schöner lol.


Schöner und auch besser lebar ohne Zweifel. Kürzer nicht unbedingt (im Kompilat). Der Compiler muss die Rechenschritte sowieso so auflösen, wie Bascom das vom Anwender händisch fordert. Recht hast Du aber natürlich trotzdem. Schön wäre es schon, wenn diese nach meinem Ermessen einzige echte Macke beseitigt würde.

Grüße
Henrik

Static
25.09.2005, 17:16
..von der Dateigröße würde sich natürlich nichts ändern.
Ganz stimmt das ja nicht, denn die Temp-Variable wird vom Bascom voll zurckgeschrieben, und dann zum Weiterechnen wieder von dort geholt. In vielen Fällen könnt er sich das sparen, wenn er gleich damit weitermachen würde oder könnte. Ein paar Statements jedesmal wären es ja doch.

PicNick
25.09.2005, 18:02
Was is jetzt passiert ?
@Static: Ich fürchte, ich hab in ersten Demenz-Anzeichen deinen Post niedergeschrieben :Haue

Bitte verzeih mir :-({|=

25.09.2005, 19:02
lol, gut gemacht :wink: