meine anfänge - warum klappts nicht !? :-(

Anfängerfragen zum Programmieren mit PureBasic.
whitelion
Beiträge: 46
Registriert: 05.05.2008 18:16
Wohnort: Celle
Kontaktdaten:

meine anfänge - warum klappts nicht !? :-(

Beitrag von whitelion »

so, nachdem ich heute mal mit einer if - schleife und messageboxen angefangen habe, stelle ich fest, dass ich schon für diese einfachen sachen nicht das nötige verständnis aufbringen kann. am ende der messagebox wird $b gar nciht angezeigt, weil er offensichtlich nicht gesetzt wird. was hab ich falsch gemacht ?

Code: Alles auswählen

;simple messageboxa

a$ = "Die Antwort lautet:"

MessageRequester("Titel", "Bitte machen Sie Ihre Eingabe:", #PB_MessageRequester_YesNo)
If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt
    b$ = "Ja"
ElseIf   Result = #PB_MessageRequester_No       ; Nein-Schalter wurde gedrückt
    b$ = "Nein"   
EndIf
    MessageRequester("Ergebnis", a$+b$ , #PB_MessageRequester_Ok)
End  
...das leben ist wie ein schlechtes adventure-game, aber die grafik ist verdammt geil!
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Schau dir mal "Result" an.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Wenn du im IF dein Result abfragst, dann muss die MessageBox auch erst mal ihre infos an die Variable Result geben:

Code: Alles auswählen

;simple messageboxa 

a$ = "Die Antwort lautet:" 

Result = MessageRequester("Titel", "Bitte machen Sie Ihre Eingabe:", #PB_MessageRequester_YesNo) 
If Result = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt 
    b$ = "Ja" 
ElseIf   Result = #PB_MessageRequester_No       ; Nein-Schalter wurde gedrückt 
    b$ = "Nein"    
EndIf 
    MessageRequester("Ergebnis", a$+b$ , #PB_MessageRequester_Ok) 
End  
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
whitelion
Beiträge: 46
Registriert: 05.05.2008 18:16
Wohnort: Celle
Kontaktdaten:

Beitrag von whitelion »

ok, danke das geht so weit, allerdings hab ich noch eine verständnisfrage...
wenn ich result ganz weg lassen, also so:

Code: Alles auswählen

;simple messageboxa

a$ = "Die Antwort lautet:"

MessageRequester("Titel", "Bitte machen Sie Ihre Eingabe:", #PB_MessageRequester_YesNo)
If #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt
    b$ = "Ja"
ElseIf #PB_MessageRequester_No       ; Nein-Schalter wurde gedrückt
    b$ = "Nein"   
EndIf
    MessageRequester("Ergebnis", a$+b$ , #PB_MessageRequester_Ok)
End  
bekomme ich als antowort immer "ja". woran liegt das ?
ich bin möchte mein programm ja nicht unnötig verschachtel, deshalb benötige ich result eigentlich gar nicht...
...das leben ist wie ein schlechtes adventure-game, aber die grafik ist verdammt geil!
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Beitrag von Kai »

Weil eine IF Abfrage auf einen positiven Wert überprüft, falls nix anderes angegeben, und dann wahr ausgibt.

Bei deiner Abfrage ist die Konstante #PB_MessageRequester_Yes die ja denn wert 6 hat, also positiv ist, die erste abfrage, somit wird sofort wahr angenommen und beendet.

Wechsel mal die abfrage mit zuerst #PB_MessageRequester_No aus, dann wird die antowort immer nein sein, da die Konstante #PB_MessageRequester_No ebenfalls einen positiven Wert besitzt.

Ich hoffe man versteht wie ich es meine, bin nicht so der beste Lehrer. :mrgreen:

EDIT:
Hier noch mal ein Beispiel ohne Variable, vieleicht verstehst du es dann besser.

Code: Alles auswählen

If MessageRequester("Frage", "Korekt?", #PB_MessageRequester_YesNo) = #IDYES
 Debug "Ja"
Else
 Debug "Nein"
EndIf
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Dann drueck doch mal "nein" ;)

If prueft ob der Ausdruck wahr ist oder nicht. Da #PB_MessageRequester_Yes
einen Wert ungleich 0 hat, ist dieser Ausdruck immer wahr. Da das aber keinen
Sinn macht, musst du eben mit Result vergleichen.

@Kai
Benutze bitte PB-Konstanten. Hier hat nicht jeder Anfaenger eine Vollversion
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Anders ausgedrückt, ohne Result ist es einfach nur:

Code: Alles auswählen

If Ja
ElseIf Nein
EndIf
Darauf würde jetzt in etwa die Frage passen: "Ja was?!"
Das Programm weiß also so gesehen gar nicht so recht, was Du willst. Daher muß der Vergleich eben rein.

Vergleichbares Beispiel: Du gehst in einen Gemüseladen, und ohne auf irgendwas zu zeigen fragst Du "sind die gespritzt?" - der Gemüsehändler hat keine Ahnung, ob Du jetzt die Karotten meinst oder die Tomaten oder sonstwas. Daher muß die Frage lauten "sind die Tomaten gespritzt", und daher muß es auch in Deinem Programm lauten "ist das ERGEBNIS von der vorherigen Abfrage mit dem MessageRequester JA oder NEIN".
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Beitrag von Kai »

edel hat geschrieben: @Kai
Benutze bitte PB-Konstanten. Hier hat nicht jeder Anfaenger eine Vollversion
Du wirst lachen, aber ich wusste nicht mal was für PB Konstanten ich da nehmen soll, benutz die schon immer, reiner Standard, i'm sorry.. <)
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Logischerweise #PB_MessageRequester_Yes ;)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

so noch mal zusammengefasst

Code: Alles auswählen

;simple messageboxa 

a$ = "Die Antwort lautet:" 


If MessageRequester("Titel", "Bitte machen Sie Ihre Eingabe:", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes       ; Ja-Schalter wurde gedrückt 
    b$ = "Ja" 
Else
    b$ = "Nein"    
EndIf 

MessageRequester("Ergebnis", a$+b$ , #PB_MessageRequester_Ok) 
End
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten