Seite 1 von 3

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

Verfasst: 07.05.2008 12:07
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  

Verfasst: 07.05.2008 12:13
von edel
Schau dir mal "Result" an.

Verfasst: 07.05.2008 12:15
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  

Verfasst: 07.05.2008 12:28
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...

Verfasst: 07.05.2008 12:33
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

Verfasst: 07.05.2008 12:36
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

Verfasst: 07.05.2008 12:40
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".

Verfasst: 07.05.2008 12:41
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.. <)

Verfasst: 07.05.2008 12:54
von edel
Logischerweise #PB_MessageRequester_Yes ;)

Verfasst: 07.05.2008 14:15
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