Seite 3 von 12

Verfasst: 03.04.2007 11:26
von Fusselohr
Guten Morgen ,
ich habe mir mal den Fehler der Subtraktion angesehen ..
Es ist so der Compiler denkt , dass :

Code: Alles auswählen

Ergebnis - Zahl
Das der Code so aussieht :

Code: Alles auswählen

Ergebnis + (-Zahl)
Vermute ich mal ... Daher kommt ein negativer anstatt ein positever Wert
raus ... Hat dafür jemand ne Lösung ?

Verfasst: 03.04.2007 11:34
von Kaeru Gaman
pardon?

hat denn deine zahl im string ein minus oder nit?

wenn deine zahl positiv ist, dann wird sie abgezogen wenn du

Code: Alles auswählen

Ergebnis - Zahl
rechnest.

deine beiden codes sind übrigens absolut gleichwertig.
(und der compiler denkt nix, der macht nur, was du ihm hinschreibst.)

wenn allerdings der wert, die du vorher in Ergebnis hattest, kleiner ist (im absoluten wert) als Zahl,
dann ist das ergebnis davon logischer weise negativ.

Code: Alles auswählen

Ergebnis = 5
Zahl = 9

Ergebnis - Zahl

Debug Ergebnis

Verfasst: 03.04.2007 11:38
von Fusselohr
Es ist halt so ... Bei mir steht :

Code: Alles auswählen

Ergebnis - Zahl
So und wenn ich als erste Zahl 99 eingebe und als zweite Zahl 11 erhalte ich -88 ...

Verfasst: 03.04.2007 11:44
von Scarabol
wenn du schreibst

Code: Alles auswählen

Ergebnis = 30
und

Code: Alles auswählen

Zahl = 10
dann wird für

Code: Alles auswählen

Ergebnis - Zahl
auch
herauskommen

Gruß
Scarabol

PS
Indem was du oben schreibst hast du dich in der Reihenfolge vertan

Verfasst: 03.04.2007 11:47
von Fusselohr
Hier ist mal mein Code ... Vielleicht is da was falsch :wink:

Code: Alles auswählen

Eingabe.s = GetGadgetText(#String_2)
  Zahl.d = ValD(Eingabe.s)
  SetGadgetText(#String_2,"")
  If Funktionen = 1
    Ergebnis + Zahl
    EndIf
  If Funktionen = 2
    Ergebnis - Zahl
    EndIf
  If Funktionen = 3
    Ergebnis * Zahl
    EndIf
  If Funktionen = 4
    Ergebnis / Zahl
    EndIf
  If Funktionen = 5
    SetGadgetText(#String_2, StrD(Ergebnis+Zahl,2))
    EndIf
  If Funktionen = 0
    Ergebnis = 0
    EndIf
EDIT : Oh mein Gott , das is ja völliger Mist ^^

Verfasst: 03.04.2007 11:53
von Kaeru Gaman
Moin Scarabol *winke*
....ich bin eh gleich raus, muss gleich essen machen...

Fusselohr hat geschrieben:Es ist halt so ... Bei mir steht :

Code: Alles auswählen

Ergebnis - Zahl
So und wenn ich als erste Zahl 99 eingebe und als zweite Zahl 11 erhalte ich -88 ...
das ist aber komplett unlogisch....

du müsstest entweder 88 oder -110 rausbekommen...

Code: Alles auswählen

Ergebnis = 0
Zahl = 99
Ergebnis - Zahl
Debug Ergebnis
Zahl = 11
Ergebnis - Zahl
Debug Ergebnis

Code: Alles auswählen

Ergebnis = 0
Zahl = 99
Ergebnis + Zahl
Debug Ergebnis
Zahl = 11
Ergebnis - Zahl
Debug Ergebnis
es wäre interessant, wenn man dein programm mal testen könnte.

dafür nützt dein code so wie er ist wenig, weil keiner von uns erst noch ein dutzend images malen möchte.

vielleicht könntest du ja mal eine abgespeckte version schreiben,
die keine externen bilder benutzt und deutlich kürzer ist,
aber die sich so verhält wie du beschreibst....

dann könnten wir da was testen bzw. schon am geposteten code sehen, wo der kniff liegt.

PS:
oh, da ist ja schon ein bisschen code.

beschreib doch mal bitte, in welcher reihenfolge du das jetzt bedienst, dass dann -88 rauskommt...

Verfasst: 03.04.2007 11:53
von Scarabol
An dem Code ist nichts falsch.

Könntest du mal ne zip packen und hier den Link posten damit ich mal den Code als ganzes testen kann.

Gruß
Scarabol

PS
Mist da war wieder einer schneller :wink:

Verfasst: 03.04.2007 11:57
von Fusselohr
http://rpgfire.lunaticgames.org/RPG-Rechner.zip

@ Kaeru Gaman : Also ich geb halt die erste Zahl in das Feld ein ...
Gehe im Menü auf subtrahieren ( da die Buttons noch nicht funktionieren ^^ ) , dann geb ich die nächste Zahl ein und geh auf Ergebnis ^^

Verfasst: 03.04.2007 12:01
von DarkDragon
Kaeru Gaman hat geschrieben:Moin Scarabol *winke*
....ich bin eh gleich raus, muss gleich essen machen...

Fusselohr hat geschrieben:Es ist halt so ... Bei mir steht :

Code: Alles auswählen

Ergebnis - Zahl
So und wenn ich als erste Zahl 99 eingebe und als zweite Zahl 11 erhalte ich -88 ...
das ist aber komplett unlogisch....
Wieso? Wenn er 11-99 rechnet, dann ist es logisch. :wink:

Verfasst: 03.04.2007 12:07
von Kaeru Gaman
> ( da die Buttons noch nicht funktionieren ^^ )
argl.. das sagt er jetzt... :lol:

> Also ich geb halt die erste Zahl in das Feld ein ... Gehe ... auf subtrahieren ... dann geb ich die nächste Zahl ein und geh auf Ergebnis

so wie dein rechner jetzt programmiert ist, arbeitet er mit Umgekehrter Polnischer Notation, wie eine Registrierkasse oder Büro-Rechenmaschine, aber nicht wie ein normaler taschenrechner.

das bedeutet, du müßtest
[11] [PLUS]* [99] [MINUS]** [=] eingeben
* für +11 als ausgangswert
** für -99 als zweiten wert

...für normale noatation wird das etwas schwieriger, denn du müsstest dir die funktion merken, um sie dann später nach der eingabe der zahl bei der nächsten funktionseingabe erst auszuführen...