Seite 3 von 4

Verfasst: 10.03.2009 12:02
von MrVain
ts-soft hat geschrieben:> "ERROR There is no current Gadget List"
Woher sollen wir Wissen, das ein neuer eine alte Version nutzt und wieso
macht er das?

PureBasic Updaten, wir schreiben die Phase 4.30, und dann noch mal testen.
Danke, das wars !! :allright:

Verfasst: 10.03.2009 14:31
von Kaeru Gaman
.... es handelt sich wohl doch nicht um MrVa!n, wie ich zuerst dachte...

tjaaaa.... so ist das eben... man kann schon mal Leute verwechseln.

Verfasst: 10.03.2009 15:01
von MrVain
Kaeru Gaman hat geschrieben:.... es handelt sich wohl doch nicht um MrVa!n, wie ich zuerst dachte...

tjaaaa.... so ist das eben... man kann schon mal Leute verwechseln.
Wie soll ich das nun deuten?? :shock: 8)

So, das EditorGadget wird nun angezeigt. Wie starte ich die Console denn im Hintergrund (ohne dass sie angezeigt wird) und ´mit welchem genauen Befehl sende ich die PrintN Ausgaben in den EditorGadget ?

Verfasst: 10.03.2009 15:04
von Kaeru Gaman
MrVain hat geschrieben:Wie soll ich das nun deuten?? :shock: 8)
ganz einfach so wie ichs sagte.... es gibt einen Mr.Va!n aus der DemoCoder Szene, aber der bist du anscheinend nicht.
aber in meinem ersten post dachte ich das, deswegen die etwas seltzame begrüßung...


@topic

du sendest gar keine "PrintN"-Ausgaben an dein EditorGadget.

du schreibst deinen Code, der die Console ansteuert um, und zwar so,
dass die Ausgabe gleich auf das EditorGadget erfolgt.

Verfasst: 10.03.2009 17:28
von Andesdaf
... und zwar mit SetGadgetText/AddGadgetItem.

Verfasst: 10.03.2009 19:49
von PMTheQuick
Und ich habe für dich was gebastelt. Kommentiert habe ich es nicht, aber ich habe nen Console-Wrapper für Open, Print, PrintN, Input & Close-Console geschrieben. Ausgereift ist es sicherlich noch nicht ganz, aber man kanns schon mal verwenden! Anleitung: Kopiere #Windowed = #True & alles zwischen CompilerIf und CompilerEndIf MIT dem CompilerIf und CompilerEndIf an den Start deines Projektes. Wenn #Windowed dann = #True ist, dann wird die Konsole in ein Fenster umgeleitet. Logging ist auch eingebaut! Und zwar wird eine log.txt erstellt... Bei Fragen oder sonst was -> Kein Problem, kannst dich bei mir melden. Natürlich auch bei anderen Forenmitgliedern ;-) Ich hoffe du kannst damit was anfangen.

Code: Alles auswählen

#Windowed = #True 

CompilerIf #Windowed = #True 
  Global threadexit
  Global NewList StringsToAdd.s()
  Global inputstate
  Global inputreturn$

  Macro OpenConsole 
    OpenConsoleNew 
  EndMacro 
  
  Macro PrintN 
    PrintNNew 
  EndMacro
  
  Macro Print 
    PrintNew
  EndMacro
  
  Macro Input 
    InputNew
  EndMacro 
  
  Macro CloseConsole 
    CloseConsoleNew 
  EndMacro 
  
  Procedure Window_Manager(dummy=0)
    CreateFile(0, "log.txt")
    WriteStringN(0, "Console -> Window Wrapper by PMTheQuick")
    WriteStringN(0, "---------------------------------------------------")
    WriteStringN(0, "")
    WriteStringN(0, "Console geöffnet")
    WID = OpenWindow(#PB_Any, 0, 0, 600, 400, "Console -> Window Wrapper", #PB_Window_ScreenCentered) 
    ; CreateGadgetList(WindowID(WID))
    EditorGadget(0, 0, 0, WindowWidth(WID), WindowHeight(WID))
    SetGadgetColor(0, #PB_Gadget_FrontColor, RGB(255,255,255))
    SetGadgetColor(0, #PB_Gadget_BackColor, RGB(0, 0, 0))
    SendMessage_(GadgetID(0),#EM_SETREADONLY,1,0)
    AddKeyboardShortcut(WID, #PB_Shortcut_Return, 100) 
    Repeat
      event = WindowEvent()
      Select event
        Case #PB_Event_Menu
          If EventMenu() = 100 And GetActiveGadget() = 0 And GetTickCount_()-LastSpawn > 100
            If inputstate = 1
              inputreturn$ = ReplaceString(GetGadgetText(0), beforeinput$, "")
              WriteStringN(0, "Input erhalten")
              WriteStringN(0, "-> Ergebnis: "+inputreturn$)
              inputstate = 0
              SetGadgetText(0, GetGadgetText(0)+Chr(13)+Chr(10))
              SendMessage_(GadgetID(0),#EM_SETREADONLY,1,0)
            EndIf
            LastSpawn = GetTickCount_()
          EndIf
      EndSelect
      ForEach StringsToAdd()
        WriteStringN(0, "Print: "+StringsToAdd())
        SetGadgetText(0, GetGadgetText(0)+StringsToAdd())
        DeleteElement(StringsToAdd())
      Next
      If inputstate = 2
        beforeinput$ = GetGadgetText(0)
        inputstate = 1
        SendMessage_(GadgetID(0),#EM_SETREADONLY,0,0)
      EndIf
    Until threadexit = 1
    CloseWindow(WID)
    inputstate = 0
    WriteStringN(0, "Console geschlossen")
    threadexit = 0
  EndProcedure
  
  Procedure OpenConsoleNew() 
    CreateThread(@Window_Manager(), 1)
  EndProcedure 
  
  Procedure PrintNNew(String$) 
    AddElement(StringsToAdd())
    StringsToAdd() = String$+Chr(13)+Chr(10)
  EndProcedure 
  
  Procedure PrintNew(String$)
    AddElement(StringsToAdd())
    StringsToAdd() = String$
  EndProcedure
  
  Procedure.s inputnew() 
    inputstate = 2
    While inputstate <> 0 : Wend
    ProcedureReturn inputreturn$
  EndProcedure 
  
  Procedure CloseConsoleNew() 
    threadexit = 1
  EndProcedure 
CompilerEndIf 

; Example
OpenConsole()
PrintN("Hallo")
Print("Gebe etwas ein: ")
input$ = Input()
PrintN("Du hast "+input$+" eingegeben")
Delay(500)
PrintN("hei!")
PrintN("ho")
Delay(500)
CloseConsole()
Gruss
PMTheQuick ;-)

Verfasst: 11.03.2009 10:51
von MrVain
Vielen Dank :allright:



ich werd's gleich mal ausprobieren

Verfasst: 11.03.2009 11:59
von Kaeru Gaman
@PMTheQuick

da wäre noch die Kritik anzumelden, dass du eine feste Fensternummer verwendest...

Verfasst: 11.03.2009 13:23
von PMTheQuick
Kaeru Gaman hat geschrieben:@PMTheQuick

da wäre noch die Kritik anzumelden, dass du eine feste Fensternummer verwendest...
Im oberen Code geändert! Jetzt sind es dynamische Fensternummern.

Gruss
PMTheQuick :-)

Verfasst: 17.03.2009 09:07
von MrVain
Wenn ich es mit deinem Code mache, kommt folgender Fehler:


[Error] Line 60:
[Error] The Link doesn't have a current element




Line 60: SetGadgetText(0, GetGadgetText(0)+StringsToAdd())