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 !!

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??
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??
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
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())