 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
gripslund
Anmeldungsdatum: 09.03.2006 Beiträge: 10 Wohnort: Quesitz
|
Verfasst am: 25.06.2017, 21:53 Titel: Rechner |
|
|
Punkt- vor Strichrechnung sollte funktionieren.
Code: |
#Include "GUI.bi"
Dim n As Integer
Dim r As Integer
Dim ll As Integer
Dim b As Integer
Dim Shared As TextBox text_a, text_b
Dim Shared As Button b_1, b_2, b_3, b_4, b_5, b_6, b_7, b_8, b_9, b_0, b_plus, b_minus, b_mal, b_durch
Dim Shared As Button b_komma, b_bs, b_brk, b_exe
Dim Shared As String text1, text2
Dim Index As Integer
Dim CalcMode As Integer
Dim loeschen As Integer
Dim eingabe As String
Dim lang As Integer
Dim teil(255) As String
Dim zahl As String
Dim num(127) As Double
Dim As Integer x,y
Sub CreateWindow_Main()
OpenWindow (600,400,"Guido's Rechner")
text_a=TextBox_New (30,30,540,30,"_")
text_b=TextBox_New (30,70,540,30,"Ready")
b_0=Button_New (30,360,100,25,"0")
b_1=Button_New (30,330,100,25,"1")
b_2=Button_New (140,330,100,25,"2")
b_3=Button_New (250,330,100,25,"3")
b_4=Button_New (30,300,100,25,"4")
b_5=Button_New (140,300,100,25,"5")
b_6=Button_New (250,300,100,25,"6")
b_7=Button_New (30,270,100,25,"7")
b_8=Button_New (140,270,100,25,"8")
b_9=Button_New (250,270,100,25,"9")
b_komma=Button_New (140,360,100,25,",")
b_bs=Button_New (360,270,100,25,"BS")
b_brk=Button_New (470,270,100,25,"BRK")
b_mal=Button_New (360,300,100,25,"*")
b_durch=Button_New (470,300,100,25,"/")
b_plus=Button_New (360,330,100,25,"+")
b_minus=Button_New (470,330,100,25,"-")
b_exe=Button_New (360,360,210,25,"EXE")
End Sub
'Main:
CreateWindow_Main()
Do
If Button_Event(b_0) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "0"
text2="NULL"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_1) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "1"
text2="EINS"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_2) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "2"
text2="ZWEI"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_3) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "3"
text2="DREI"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_4) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "4"
text2="VIER"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_5) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "5"
text2="FUENF"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_6) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "6"
text2="SECHS"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_7) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "7"
text2="SIEBEN"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_8) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "8"
text2="ACHT"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_9) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "9"
text2="NEUN"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_komma) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + ","
text2="KOMMA"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_bs) Then
text1=TextBox_GetText(text_a)
If Len(text1)>0 Then
text1=Left(text1,Len(text1)-1)
EndIf
text2="BACK SPACE"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
EndIf
If Button_Event(b_brk) Then
lang=0
TextBox_SetText(text_a,"_")
TextBox_SetText(text_b,"Ready")
Index=0
CalcMode=0
EndIf
If Button_Event(b_mal) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1="0"
EndIf
TextBox_SetText(text_a,text1 + "*")
TextBox_SetText(text_b,"MAL")
EndIf
If Button_Event(b_durch) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1="0"
EndIf
TextBox_SetText(text_a,text1 + "/")
TextBox_SetText(text_b,"DURCH")
EndIf
If Button_Event(b_plus) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1="0"
EndIf
TextBox_SetText(text_a,text1 + "+")
TextBox_SetText(text_b,"PLUS")
EndIf
If Button_Event(b_minus) Then
text1=TextBox_GetText(text_a)
If text1="_" Then
text1="0"
EndIf
TextBox_SetText(text_a,text1 + "-")
TextBox_SetText(text_b,"MINUS")
EndIf
If Button_Event(b_exe) Then
TextBox_SetText(text_b,"EXE")
eingabe=TextBox_GetText(text_a)
lang=Len(eingabe)
If lang>0 And eingabe<>"_" Then
For x=0 To 254
teil(x)=""
Next
For x=0 To 126
num(x)=0
Next
For x=1 To lang
teil(x)=Mid(eingabe,x,1)
Next
y=0
zahl=""
For x=1 To lang+1
If teil(x)<>"+" And teil(x)<>"-" And teil(x)<>"*" And teil(x)<>"/" Then
zahl=zahl + teil(x)
If InStr(zahl,",")>1 Then
TextBox_SetText(text_b," zu viele Komma ")
EndIf
EndIf
If teil(x)="+" Or teil(x)="-" Or teil(x)="*" Or teil(x)="/" Or teil(x)="" Then
y=y+1
num(y)=Val(zahl)
teil(y)=teil(x)
zahl=""
EndIf
Next
For ll=1 To y
If teil(ll)="*" Or teil(ll)="/" Then
If teil(ll)="*" Then
num(ll)=num(ll)*num(ll+1)
ElseIf teil(ll)="/" Then
num(ll)=num(ll)/num(ll+1)
EndIf
For b=ll+1 To y
num(b)=num(b+1)
teil(b-1)=teil(b)
Next
ll=ll-1
EndIf
Next
For ll=1 To y
If teil(ll)="+" Or teil(ll)="-" Then
If teil(ll)="+" Then
num(ll)=num(ll)+num(ll+1)
ElseIf teil(ll)="-" Then
num(ll)=num(ll)-num(ll+1)
EndIf
For b=ll+1 To y
num(b)=num(b+1)
teil(b-1)=teil(b)
Next
ll=ll-1
EndIf
Next
' Print num(1)
TextBox_SetText(text_b,Str(num(1)))
EndIf
Index=0
CalcMode=0
loeschen=1
lang=0
EndIf
Sleep 1
Loop Until Window_Event_Close
End
|
|
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1027 Wohnort: Niederbayern
|
Verfasst am: 25.06.2017, 22:52 Titel: |
|
|
???
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
gripslund
Anmeldungsdatum: 09.03.2006 Beiträge: 10 Wohnort: Quesitz
|
|
Nach oben |
|
 |
gripslund
Anmeldungsdatum: 09.03.2006 Beiträge: 10 Wohnort: Quesitz
|
Verfasst am: 30.06.2017, 13:46 Titel: |
|
|
Moin,
hier nun eine kommentierte Version (und leicht berichtigt).
Hätte ja auch die .EXE eingestellt - nur wie?
Code: |
' Programm: Rechner
' - Addition, Subtraktion, Multiplikation, Division
' - Punkt- vor Strich-Rechnung
' - nur per Maus zu bedienen
' - benötigt "Simple-GUI"
#Include "GUI.bi" ' Einbindung der "Simple-GUI"
Dim n As Integer
Dim r As Integer
Dim ll As Integer
Dim b As Integer
Dim Shared As TextBox text_a, text_b
Dim Shared As Button b_1, b_2, b_3, b_4, b_5, b_6, b_7, b_8, b_9, b_0, b_plus, b_minus, b_mal, b_durch
Dim Shared As Button b_komma, b_bs, b_brk, b_exe
Dim Shared As String text1, text2
Dim Index As Integer
Dim CalcMode As Integer
Dim loeschen As Integer
Dim eingabe As String ' hier ist die gesamte Eingabezeile drin (nach Druck auf EXE)
Dim lang As Integer
Dim teil(255) As String ' Eingabe darf MAX! 255 Zeichen lang sein
Dim zahl As String
Dim num(127) As Double ' die einzelnen Zahlen (NICHT Ziffern!) der gesamten Eingabe (ohne Operatoren)
Dim As Integer x,y
Sub CreateWindow_Main()
OpenWindow (600,400,"Rechner")
text_a=TextBox_New (30,30,540,30,"_") ' obere Anzeige, Eingabe der Rechnung
text_b=TextBox_New (30,70,540,30,"Ready") ' untere Anzeige, Ausgabe des Ergebnisses + diverse andere Ausgaben ;)
b_0=Button_New (30,360,100,25,"0")
b_1=Button_New (30,330,100,25,"1")
b_2=Button_New (140,330,100,25,"2")
b_3=Button_New (250,330,100,25,"3")
b_4=Button_New (30,300,100,25,"4")
b_5=Button_New (140,300,100,25,"5")
b_6=Button_New (250,300,100,25,"6")
b_7=Button_New (30,270,100,25,"7")
b_8=Button_New (140,270,100,25,"8")
b_9=Button_New (250,270,100,25,"9")
b_komma=Button_New (140,360,100,25,",")
b_bs=Button_New (360,270,100,25,"BS")
b_brk=Button_New (470,270,100,25,"BRK")
b_mal=Button_New (360,300,100,25,"*")
b_durch=Button_New (470,300,100,25,"/")
b_plus=Button_New (360,330,100,25,"+")
b_minus=Button_New (470,330,100,25,"-")
b_exe=Button_New (360,360,210,25,"EXE")
End Sub
'Main:
CreateWindow_Main()
Do
If Button_Event(b_0) Then ' Taste "0" angeklickt
text1=TextBox_GetText(text_a) ' obere Anzeige auslesen
If text1="_" Then ' Anfangs-Cursor? ja -> loeschen
text1=""
EndIf
If loeschen=1 Then ' vorhergehende Rechnung beendet? ja -> loeschen
text1=""
EndIf
text1=text1 + "0" ' Ziffer "0" hinzufuegen
text2="NULL" ' Kontrollanzeige, welche Taste geklickt wurde
TextBox_SetText(text_a,text1) ' obere Anzeige aktualisieren
TextBox_SetText(text_b,text2) ' untere Anzeige aktualisieren
loeschen=0 ' naechste Eingabe NICHT loeschen
EndIf
If Button_Event(b_1) Then ' Taste "1" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "1"
text2="EINS"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_2) Then ' Taste "2" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "2"
text2="ZWEI"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_3) Then ' Taste "3" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "3"
text2="DREI"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_4) Then ' Taste "4" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "4"
text2="VIER"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_5) Then ' Taste "5" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "5"
text2="FUENF"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_6) Then ' Taste "6" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "6"
text2="SECHS"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_7) Then ' Taste "7" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "7"
text2="SIEBEN"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_8) Then ' Taste "8" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "8"
text2="ACHT"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_9) Then ' Taste "9" angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "9"
text2="NEUN"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_komma) Then ' Taste "," angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1=""
EndIf
If loeschen=1 Then
text1=""
EndIf
text1=text1 + "." ' dazugefuegt wird ein PUNKT!!!
text2="KOMMA"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
loeschen=0
EndIf
If Button_Event(b_bs) Then ' Taste "BS" (zurueck) angeklickt
text1=TextBox_GetText(text_a)
If Len(text1)>0 Then ' Laenge > Null? ja -> letzte Eingabe abschneiden
text1=Left(text1,Len(text1)-1)
EndIf
text2="BACK SPACE"
TextBox_SetText(text_a,text1)
TextBox_SetText(text_b,text2)
EndIf
If Button_Event(b_brk) Then ' Taste "BRK" angeklickt
lang=0 ' "Grundzustand" herstellen
TextBox_SetText(text_a,"_")
TextBox_SetText(text_b,"Ready")
Index=0
CalcMode=0
EndIf
If Button_Event(b_mal) Then ' Taste "*" (Multiplikation) angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then ' Anfangs-Cursor?
text1="0" ' ja -> eine "0" davor
EndIf
TextBox_SetText(text_a,text1 + "*")
TextBox_SetText(text_b,"MAL")
EndIf
If Button_Event(b_durch) Then ' Taste "/" (Division) angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1="0"
EndIf
TextBox_SetText(text_a,text1 + "/")
TextBox_SetText(text_b,"DURCH")
EndIf
If Button_Event(b_plus) Then ' Taste "+" (Addition) angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1="0"
EndIf
TextBox_SetText(text_a,text1 + "+")
TextBox_SetText(text_b,"PLUS")
EndIf
If Button_Event(b_minus) Then ' Taste "-" (Subtraktion) angeklickt
text1=TextBox_GetText(text_a)
If text1="_" Then
text1="0"
EndIf
TextBox_SetText(text_a,text1 + "-")
TextBox_SetText(text_b,"MINUS")
EndIf
If Button_Event(b_exe) Then ' Taste "EXE" (Berechnung, "=") angeklickt
TextBox_SetText(text_b,"EXE")
eingabe=TextBox_GetText(text_a) ' gesamte obere Anzeige nach "eingabe"
lang=Len(eingabe) ' Laenge ermitteln
If lang>0 And eingabe<>"_" Then
For x=0 To 254 ' Feld vor neuer Rechnung loeschen
teil(x)=""
Next
For x=0 To 126 ' Feld vor neuer Rechnung loeschen
num(x)=0
Next
For x=1 To lang ' die Eingabe in ihre Einzelteile zerlegen
teil(x)=Mid(eingabe,x,1)
Next
y=0
zahl=""
For x=1 To lang+1
If teil(x)<>"+" And teil(x)<>"-" And teil(x)<>"*" And teil(x)<>"/" Then
zahl=zahl + teil(x) ' die Zahl ZWISCHEN den Operatoren zusammensetzen
If InStr(zahl,".")>1 Then ' Test auf Anzahl der Kommata
TextBox_SetText(text_b," zu viele Komma ")
EndIf
EndIf
If teil(x)="+" Or teil(x)="-" Or teil(x)="*" Or teil(x)="/" Or teil(x)="" Then
y=y+1 ' Operator herausfiltern und zaehlen
num(y)=Val(zahl) ' -> also die Summe der Operatoren bestimmen
teil(y)=teil(x)
zahl=""
EndIf
Next
For ll=1 To y
If teil(ll)="*" Or teil(ll)="/" Then ' zuerst die Punktrechnungen ausfuehren
If teil(ll)="*" Then
num(ll)=num(ll)*num(ll+1) ' Multiplikation
ElseIf teil(ll)="/" Then
num(ll)=num(ll)/num(ll+1) ' Division
EndIf
For b=ll+1 To y ' den "Rest" nach LINKS schieben
num(b)=num(b+1)
teil(b-1)=teil(b)
Next
ll=ll-1 ' noch eine Punktrechnung uebrig?
EndIf
Next
For ll=1 To y
If teil(ll)="+" Or teil(ll)="-" Then ' danach die Strichrechnung ausfuehren
If teil(ll)="+" Then
num(ll)=num(ll)+num(ll+1) ' Addition
ElseIf teil(ll)="-" Then
num(ll)=num(ll)-num(ll+1) ' Subtraktion
EndIf
For b=ll+1 To y ' den "Rest" nach LINKS schieben
num(b)=num(b+1)
teil(b-1)=teil(b)
Next
ll=ll-1 ' noch eine Strichrechnung uebrig?
EndIf
Next
' Print num(1) ' Test-Ausgabe fuer die Konsole
TextBox_SetText(text_b,Str(num(1))) ' das Ergebnis steht IMMER vorn/links (Index=1)
EndIf
Index=0
CalcMode=0
loeschen=1
lang=0
EndIf
Sleep 1
Loop Until Window_Event_Close
End
|
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4531 Wohnort: ~/
|
Verfasst am: 30.06.2017, 15:30 Titel: |
|
|
gripslund hat Folgendes geschrieben: | Hätte ja auch die .EXE eingestellt - nur wie? |
Hier im Forum kannst du keine Dateien hochladen, aber z. B. im Portal:
http://freebasic-portal.de/
Portal und Forum gehören zwar zusammen, erfordern aber leider eine getrennte Anmeldung.
Persönlich ist mir der Quelltext ja deutlich lieber (vor allem weil ich Linux nutze und mit einer exe sowieso nicht so viel anfangen kann ). _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 61 Wohnort: Bayern
|
Verfasst am: 21.01.2018, 16:31 Titel: |
|
|
Hallo gripslund,
ich freue mich, dass ich mal ein Beispiel eines Nutzers mit meinem Tool im FB-Forum finde! Herzliche Grüße, Lothar |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|