Seite 1 von 3

Strings ...

Verfasst: 24.04.2007 20:54
von Dark Skillu
Hallo wie schaffe ich es einen Text aus einem String Gadget auszulesen?

Ich würde gernewissen was in dem Feld geschrieben wurde...

Hier der Code dazu:

Code: Alles auswählen

If OpenWindow(0, 216, 0, 270, 71, "Strings",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) And CreateGadgetList(WindowID(0))
      
      
      StringGadget(1, 15, 15, 225, 30, "")
      
    EndIf

Repeat 
WindowEventID = WaitWindowEvent()

    Until WindowEventID = #PB_Event_CloseWindow
  
Wie ich abfragen kann ob ein Button gedrückt wurde hab ich schon ausprobiert das funktioniert aber nicht :(


Außerdem hab ich nen kleines Quiz programmiert und funktioniert ganz gut nur würde ich noch gerne eine Statistik einfügen wieviel fragen richtig/falsch beantwortet wurden, und hab leider nicht viel ahnung wie ich das schaffe. Hier der Code:

Vielen DEank für die Hilfe im Voraus

Code: Alles auswählen

;coded by DarkSkillu
;Copyright (c) 2007

;Schriftarten
Global FontID1
FontID1 = LoadFont(1, "Comic Sans MS", 14)
Global FontID2
FontID2 = LoadFont(2, "Comic Sans MS", 11)
Global FontID3
FontID3 = LoadFont(3, "Comic Sans MS", 13, #PB_Font_Bold)
Global FontID4
FontID4 = LoadFont(4, "Comic Sans MS", 10, #PB_Font_Bold)

  If OpenWindow(0, 394, 177, 351, 300, "Quiz",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar ) And CreateGadgetList(WindowID(0))
      TextGadget(1, 15, 15, 315, 45, "Was ist die Hauptstadt von Deutschland?", #PB_Text_Center)
      SetGadgetFont(1, FontID3)
      ButtonGadget(2, 45, 75, 255, 30, "Bonn")
      SetGadgetFont(2, FontID4)
      ButtonGadget(3, 45, 120, 255, 30, "München")
      SetGadgetFont(3, FontID4)
      ButtonGadget(4, 45, 165, 255, 30, "Berlin")
      SetGadgetFont(4, FontID4)
      ButtonGadget(5, 45, 210, 255, 30, "Hamburg")
      SetGadgetFont(5, FontID4)
      TextGadget(6, 60, 255, 210, 45, "Copyright by DarkSkillu (c) 2007", #PB_Text_Center)
      SetGadgetFont(6, FontID4)
      
  EndIf
  
 Repeat 
 EventID=WaitWindowEvent()
    If EventID=#PB_Event_CloseWindow
      Quit=1
    EndIf
   If EventID = #PB_Event_Gadget
     GadgetID= 1
       
       If EventGadget()=2
         MessageRequester("Falsch","Diese Antwort war leider Falsch." +Chr(10)+ "Bitte versuchen sie es erneut.")
         Quit=1
       EndIf
       
       If EventGadget()=3
         MessageRequester("Falsch","Diese Antwort war leider Falsch." +Chr(10)+ "Bitte versuchen sie es erneut.")
         Quit=1
       EndIf
       
       
      If EventGadget()=4
         MessageRequester("Richtig","Diese Antwort ist Richtig!")
         
         
         

            If OpenWindow(0, 394, 177, 351, 300, "Quiz",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar ) And CreateGadgetList(WindowID(0))
              TextGadget(7, 15, 15, 315, 45, "Was ist die Hauptstadt von England?", #PB_Text_Center)
              SetGadgetFont(7, FontID3)
              ButtonGadget(8, 45, 75, 255, 30, "London")
              SetGadgetFont(8, FontID4)
              ButtonGadget(9, 45, 120, 255, 30, "Manchester")
              SetGadgetFont(9, FontID4)
              ButtonGadget(10, 45, 165, 255, 30, "Liverpool")
              SetGadgetFont(10, FontID4)
              ButtonGadget(11, 45, 210, 255, 30, "Sheffield")
              SetGadgetFont(11, FontID4)
              TextGadget(12, 60, 255, 210, 45, "Copyright by DarkSkillu (c) 2007", #PB_Text_Center)
              SetGadgetFont(12, FontID4)  
            EndIf
         
            Repeat 
            EventID=WaitWindowEvent()
              If EventID=#PB_Event_CloseWindow
                Quit=1
              EndIf
                If EventID = #PB_Event_Gadget
                GadgetID= 1
       
                  If EventGadget()=8
                    MessageRequester("Richtig","Diese Antwort ist Richtig!." +Chr(10)+ "Mein Quiz ist leider hier schon zu Ende :( ")
                    Quit=1
                  EndIf
       
                  If EventGadget()=9
                    MessageRequester("Falsch","Diese Antwort war leider Falsch." +Chr(10)+ "Bitte versuchen sie es erneut.")
                    Quit=1
                  EndIf
                
                  If EventGadget()=10
                    MessageRequester("Falsch","Diese Antwort war leider Falsch." +Chr(10)+ "Bitte versuchen sie es erneut.")
                    Quit=1
                  EndIf
                
                  If EventGadget()=11
                    MessageRequester("Falsch","Diese Antwort war leider Falsch." +Chr(10)+ "Bitte versuchen sie es erneut.")
                    Quit=1
                  EndIf
           
                EndIf
              Until Quit=1
       
       EndIf
       
       If EventGadget()=5
         MessageRequester("Falsch","Diese Antwort war leider falsch." +Chr(10)+ "Bitte versuchen sie es erneut.")
         Quit=1
       EndIf
   EndIf 
 Until Quit=1


Re: Strings etc.

Verfasst: 24.04.2007 20:59
von Kiffi
Dark Skillu hat geschrieben:Hallo wie schaffe ich es einen Text aus einem String Gadget auszulesen?
Mit GetGadgetText(DeineStringGadgetNummer)
Dark Skillu hat geschrieben:Wie ich abfragen kann ob ein Button gedrückt wurde hab ich schon ausprobiert das funktioniert aber nicht :(
WindowEventID auf #PB_Event_Gadget prüfen. Dann steht die Nummer des
Gadgets, welches ein Event gefeuert hat, in EventGadget()

Grüße ... Kiffi

Verfasst: 24.04.2007 21:02
von Dark Skillu
Danke hat mir sehr geholfen, habe aber in der zwischen Zeit meinen Post editiert mit dem Quiz...

Verfasst: 24.04.2007 21:12
von AND51
Tipp, was du als nächstes erlernen könntest, wenn du es noch nicht weißt:
Nimm statt den vielen If's lieber ein Select!

Und anstatt mehrmals diese Zeile mit MessageRequester/Antwort-Falsch hinzuschreiben, könntest du daraus eine Procedure (noch besser: Macro) machen.

Aber ist deine Entscheidung, was du wann machst.

Verfasst: 24.04.2007 21:15
von Dark Skillu
Eine Prozedure ist ein programmteil und kann überall abgerufen werden oder hab ich da was falsch verstanden?Und von select hab ich gar keine ahnung

Verfasst: 24.04.2007 21:28
von Dark Skillu
Naja hab das mit dem getGadgetTex probiert aber das funktioniert noch nicht, mal abgesehen,dass das fenster trotz schleife direkt schließt

Code: Alles auswählen

Repeat 
If OpenWindow(0, 216, 0, 454, 174, "New",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) And CreateGadgetList(WindowID(0))
      StringGadget(1, 45, 15, 225, 45, "Klick Mich")
      EditorGadget(2, 60, 75, 195, 60)


    EndIf

GetGadgetText(1) 

Until #PB_Event_CloseWindow

Verfasst: 24.04.2007 21:30
von Kaeru Gaman
ja nee...

das erzeugen des fensters darf nich in die schleife.

guck dir doch mal bitte erstmal die beispiele in der help an.
bei WaitWindowEvent() findest du nen kompletten eventloop.

Verfasst: 24.04.2007 21:46
von Kiffi
@DarkSkillu:

Da! Ich habe den Fehler in Deinem Code gefunden:

Code: Alles auswählen

;coded by DarkSkillu
;Copyright (c) 2007 
stimmt nicht ganz. Da müsste eher sowas wie folgt stehen

Code: Alles auswählen

;Programmiert (mit Unterstützung) von Kaeru Gaman, PureBasic4.0, TomS, ts-soft
;Zusammengestellt und leider nicht verstanden von DarkSkillu (HeXOR hat's geahnt)
;-)

Im Ernst und auch wirklich nicht böse gemeint: Anhand Deiner Fragen
kann man erkennen, dass Du die elementaren Funktionsweisen "Deines"
Codes nicht verstanden hast.

Mein ernsthaft gut gemeinter Rat: Bevor Du Dich jetzt an eine Erweiterung
des Codes machst, würde ich an Deiner Stelle erst einmal versuchen, zu
verstehen, was der Code überhaupt macht.

Grüße ... Kiffi

Verfasst: 25.04.2007 13:30
von Tsuki-Namida
okay hier zur deiner Button und StringGadget frage habe ich dir was vorbereitet und kommentiert.

Code: Alles auswählen

If OpenWindow(0,0,0,100,100,"Fenstertitel",#PB_Window_ScreenCentered) ;Öffnen eines Fensters dessen Flag es in die Mitte des Bildschirmes derstellt
  If CreateGadgetList(WindowID(0))
    StringGadget(1,0,0,100,20,"Text")
    ButtonGadget(2,0,20,100,20,"Button Text")
  EndIf
EndIf
Repeat ;Startet die Schleife
  Event = WindowEvent()
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()
  
  If Event = #PB_Event_Gadget ;fragt ab ob ein Eventgeplant ist
    If GadgetID = 2 ; Fragt ab ob der Button gedrückt wurde
      String$ = GetGadgetText(1) ; Speichert den Inhalt vom StringGadget ind einem String$
      MessageRequester("Ausgabe", String$) ; Gibt eine Naricht aus mit dem Inhalt des srtings
      a = 1 ; Die Variabel erhält den Wert "1" damit man die Schleife "Repeat:Until" verlassen kann
    EndIf
    
  EndIf
  
Until a = 1 ; Beendet die Schleife mit der Bedingung das die Variabel "a" gleich 1 ist.
End ; Beendet die Anwendung

Verfasst: 25.04.2007 15:32
von Dark Skillu
den Code mit dem Quiz hab ich ganz alleine programmiert und ohne hilfe von irgendwelchen mods hier im forum ... ich weiss,dass ich hier schon was mitm quiz gepostet habe und mehrere lösungen gepostet wurden deshalb habe ich diese auch nicht benutzt,weil ich se nicht ganz verstanden habe, ähmm prozeduren verstehe ich und funktionieren auch:

Code: Alles auswählen

Procedure Falsch()
MessageRequester("Falsch","Diese Antwort war leider Falsch." +Chr(10)+ "Bitte versuchen sie es erneut.")
         Quit=1
EndProcedure

 

;Schriftarten
Global FontID1
FontID1 = LoadFont(1, "Comic Sans MS", 14)
Global FontID2
FontID2 = LoadFont(2, "Comic Sans MS", 11)
Global FontID3
FontID3 = LoadFont(3, "Comic Sans MS", 13, #PB_Font_Bold)
Global FontID4
FontID4 = LoadFont(4, "Comic Sans MS", 10, #PB_Font_Bold)

  If OpenWindow(0, 394, 177, 351, 300, "Quiz",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar ) And CreateGadgetList(WindowID(0))
      TextGadget(1, 15, 15, 315, 45, "Was ist die Hauptstadt von Deutschland?", #PB_Text_Center)
      SetGadgetFont(1, FontID3)
      ButtonGadget(2, 45, 75, 255, 30, "Bonn")
      SetGadgetFont(2, FontID4)
      ButtonGadget(3, 45, 120, 255, 30, "München")
      SetGadgetFont(3, FontID4)
      ButtonGadget(4, 45, 165, 255, 30, "Berlin")
      SetGadgetFont(4, FontID4)
      ButtonGadget(5, 45, 210, 255, 30, "Hamburg")
      SetGadgetFont(5, FontID4)
      TextGadget(6, 60, 255, 210, 45, "Copyright by DarkSkillu (c) 2007", #PB_Text_Center)
      SetGadgetFont(6, FontID4)
      
  EndIf
  
 Repeat 
 EventID=WaitWindowEvent()
    If EventID=#PB_Event_CloseWindow
      Quit=1
    EndIf
   If EventID = #PB_Event_Gadget
     GadgetID= 1
       
       If EventGadget()=2
         Falsch()
       EndIf
       
       If EventGadget()=3
         Falsch()
       EndIf
       
       
      If EventGadget()=4
         MessageRequester("Richtig","Diese Antwort ist Richtig!")
         
         
         

            If OpenWindow(0, 394, 177, 351, 300, "Quiz",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar ) And CreateGadgetList(WindowID(0))
              TextGadget(7, 15, 15, 315, 45, "Was ist die Hauptstadt von England?", #PB_Text_Center)
              SetGadgetFont(7, FontID3)
              ButtonGadget(8, 45, 75, 255, 30, "London")
              SetGadgetFont(8, FontID4)
              ButtonGadget(9, 45, 120, 255, 30, "Manchester")
              SetGadgetFont(9, FontID4)
              ButtonGadget(10, 45, 165, 255, 30, "Liverpool")
              SetGadgetFont(10, FontID4)
              ButtonGadget(11, 45, 210, 255, 30, "Sheffield")
              SetGadgetFont(11, FontID4)
              TextGadget(12, 60, 255, 210, 45, "Copyright by DarkSkillu (c) 2007", #PB_Text_Center)
              SetGadgetFont(12, FontID4)  
            EndIf
         
            Repeat 
            EventID=WaitWindowEvent()
              If EventID=#PB_Event_CloseWindow
                Quit=1
              EndIf
                If EventID = #PB_Event_Gadget
                GadgetID= 1
       
                  If EventGadget()=8
                    MessageRequester("Richtig","Diese Antwort ist Richtig!." +Chr(10)+ "Mein Quiz ist leider hier schon zu Ende :( ")
                    Quit=1
                  EndIf
       
                  If EventGadget()=9
                    Falsch()
                  EndIf
                
                  If EventGadget()=10
                    Falsch()
                  EndIf
                
                  If EventGadget()=11
                    Falsch()
                  EndIf
           
                EndIf
              Until Quit=1
       
       EndIf
       
       If EventGadget()=5
         Falsch()
       EndIf
   EndIf 
 Until Quit=1
Danke Magix-Soft <Kain> so was ähnliches habe ich gesucht