Probleme beim schreiben im openscreen()

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
captain third
Beiträge: 194
Registriert: 12.12.2004 13:14
Kontaktdaten:

Probleme beim schreiben im openscreen()

Beitrag von captain third »

ich hab mal im codearchiv gegugt da habe ich diesen code gefunden

Code: Alles auswählen

Structure Key 
  Zeichen.s 
  Code.l 
EndStructure 
NewList Key.Key() 

Procedure AddKey(Zeichen.s, Code.l) 
  AddElement(Key()) 
  Key()\Zeichen = Zeichen 
  Key()\Code = Code 
EndProcedure 

Procedure InitKeys() 
  ;Buchstaben von a bis z 
  AddKey("a", #PB_Key_A) 
  AddKey("b", #PB_Key_B) 
  AddKey("c", #PB_Key_C) 
  AddKey("d", #PB_Key_D) 
  AddKey("e", #PB_Key_E) 
  AddKey("f", #PB_Key_F) 
  AddKey("g", #PB_Key_G) 
  AddKey("h", #PB_Key_H) 
  AddKey("i", #PB_Key_I) 
  AddKey("j", #PB_Key_J) 
  AddKey("k", #PB_Key_K) 
  AddKey("l", #PB_Key_L) 
  AddKey("m", #PB_Key_M) 
  AddKey("n", #PB_Key_N) 
  AddKey("o", #PB_Key_O) 
  AddKey("p", #PB_Key_P) 
  AddKey("q", #PB_Key_Q) 
  AddKey("r", #PB_Key_R) 
  AddKey("s", #PB_Key_S) 
  AddKey("t", #PB_Key_T) 
  AddKey("u", #PB_Key_U) 
  AddKey("v", #PB_Key_V) 
  AddKey("w", #PB_Key_W) 
  AddKey("x", #PB_Key_X) 
  AddKey("y", #PB_Key_Y) 
  AddKey("z", #PB_Key_Z) 
  
  ;Zahlen von 1 bis 0 
  AddKey("1", #PB_Key_1) 
  AddKey("2", #PB_Key_2) 
  AddKey("3", #PB_Key_3) 
  AddKey("4", #PB_Key_4) 
  AddKey("5", #PB_Key_5) 
  AddKey("6", #PB_Key_6) 
  AddKey("7", #PB_Key_7) 
  AddKey("8", #PB_Key_8) 
  AddKey("9", #PB_Key_9) 
  AddKey("0", #PB_Key_0) 
  
  ;Sonderzeichen 
  AddKey(" ", #PB_Key_Space) 
EndProcedure 

Procedure.s GetKeyboardReleasedKey() 
  ResetList(Key()) 
  Shift.l = #False 
  While NextElement(Key()) 
    If KeyboardReleased(Key()\Code) 
      If KeyboardPushed(#PB_Key_LeftShift) Or KeyboardPushed(#PB_Key_RightShift) 
        Shift = #True 
        Zeichen.s = UCase(Key()\Zeichen) 
      Else 
        If Shift = #False : Zeichen.s = Key()\Zeichen : EndIf 
      EndIf 
    EndIf 
  Wend 
  ProcedureReturn Zeichen 
EndProcedure 

InitKeys() 

InitSprite() 
InitKeyboard() 
OpenScreen(800, 600, 16, "Eingabe") 
Eingabe.s = "" 
Repeat 
  ExamineKeyboard() 
  ClearScreen(0, 0, 0) 
    Eingabe = Eingabe + GetKeyboardReleasedKey() 
    If KeyboardReleased(#PB_KEY_BACK) 
      If Len(Eingabe) 
        Eingabe = Mid(Eingabe, 1, Len(Eingabe) - 1) 
      EndIf 
    EndIf 
    
    StartDrawing(ScreenOutput()) 
      DrawingMode(1) 
      Locate(0,100) 
      FrontColor(100,255,0) 
      DrawText(Eingabe) 
    StopDrawing() 
    FlipBuffers() 
Until KeyboardPushed(#PB_Key_Escape) 
CloseScreen()
funktioniert,ich wollt da noch reinbauen wenn man auf enter drückt das er dann ne neue zeile macht und sich die vorige zeile merkt,also fürs spätere abspeichern dann...

könnt ihr mir helfen?ich habs schon irgendwie versucht aber nix is dabei rausgekommen
natoll,jetzt muss ich noch einen Rechner zusammenbaun der 24 stunden am Tag online ist und meinen Server für mein Projekt Order of Blance laufen lässt
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Code: Alles auswählen

Structure Key 
  Zeichen.s 
  Code.l 
EndStructure 
NewList Key.Key() 




Procedure AddKey(Zeichen.s, Code.l) 
  AddElement(Key()) 
  Key()\Zeichen = Zeichen 
  Key()\Code = Code 
EndProcedure 

Procedure InitKeys() 
  ;Buchstaben von a bis z 
  AddKey("a", #PB_Key_A) 
  AddKey("b", #PB_Key_B) 
  AddKey("c", #PB_Key_C) 
  AddKey("d", #PB_Key_D) 
  AddKey("e", #PB_Key_E) 
  AddKey("f", #PB_Key_F) 
  AddKey("g", #PB_Key_G) 
  AddKey("h", #PB_Key_H) 
  AddKey("i", #PB_Key_I) 
  AddKey("j", #PB_Key_J) 
  AddKey("k", #PB_Key_K) 
  AddKey("l", #PB_Key_L) 
  AddKey("m", #PB_Key_M) 
  AddKey("n", #PB_Key_N) 
  AddKey("o", #PB_Key_O) 
  AddKey("p", #PB_Key_P) 
  AddKey("q", #PB_Key_Q) 
  AddKey("r", #PB_Key_R) 
  AddKey("s", #PB_Key_S) 
  AddKey("t", #PB_Key_T) 
  AddKey("u", #PB_Key_U) 
  AddKey("v", #PB_Key_V) 
  AddKey("w", #PB_Key_W) 
  AddKey("x", #PB_Key_X) 
  AddKey("y", #PB_Key_Y) 
  AddKey("z", #PB_Key_Z) 
  
  ;Zahlen von 1 bis 0 
  AddKey("1", #PB_Key_1) 
  AddKey("2", #PB_Key_2) 
  AddKey("3", #PB_Key_3) 
  AddKey("4", #PB_Key_4) 
  AddKey("5", #PB_Key_5) 
  AddKey("6", #PB_Key_6) 
  AddKey("7", #PB_Key_7) 
  AddKey("8", #PB_Key_8) 
  AddKey("9", #PB_Key_9) 
  AddKey("0", #PB_Key_0) 
  
  ;Sonderzeichen 
  AddKey(" ", #PB_Key_Space) 
EndProcedure 

Procedure.s GetKeyboardReleasedKey() 
  ResetList(Key()) 
  Shift.l = #False 
  While NextElement(Key()) 
    If KeyboardReleased(Key()\Code) 
      If KeyboardPushed(#PB_Key_LeftShift) Or KeyboardPushed(#PB_Key_RightShift) 
        Shift = #True 
        Zeichen.s = UCase(Key()\Zeichen) 
      Else 
        If Shift = #False : Zeichen.s = Key()\Zeichen : EndIf 
      EndIf 
    EndIf 
  Wend 
  ProcedureReturn Zeichen 
EndProcedure 

InitKeys() 

InitSprite() 
InitKeyboard() 
OpenScreen(800, 600, 16, "Eingabe") 
Eingabe.s = "" 
Repeat 
  ExamineKeyboard() 
  ClearScreen(0, 0, 0) 
    Eingabe = Eingabe + GetKeyboardReleasedKey() 
    If KeyboardReleased(#PB_KEY_BACK) 
      If Len(Eingabe) 
        Eingabe = Mid(Eingabe, 1, Len(Eingabe) - 1) 
      EndIf 
    EndIf 
    

    if KeyboardReleased(#PB_Key_Enter)
      Eingabe+chr(10)
    endif 
    
    
    StartDrawing(ScreenOutput()) 
      DrawingMode(1) 
      Locate(0,100) 
      FrontColor(100,255,0) 
      DrawText(Eingabe) 
    StopDrawing() 
    FlipBuffers() 
Until KeyboardPushed(#PB_Key_Escape) 
CloseScreen() 
Keine ahnung ob das geht(habs jetzt nicht getestet)
Vielleicht meinst dus ja auch anders als ichs verstanden hab...

KeyKon
Benutzeravatar
captain third
Beiträge: 194
Registriert: 12.12.2004 13:14
Kontaktdaten:

Beitrag von captain third »

erstmal ein recht herzlichen dank an dir,wenigstens eine antwort,auch wenn dies net funzt,bin trotzdem erfreut das sich wenigstens einer meldet

ne der code funzt net,da wird dann einfach bloß ein strich angezeigt,und des heist

Code: Alles auswählen

(#PB_Button_Return) net Enter...aber trotzdem danke  :mrgreen: 
genauso hab ichs nämlich auch probiert...
natoll,jetzt muss ich noch einen Rechner zusammenbaun der 24 stunden am Tag online ist und meinen Server für mein Projekt Order of Blance laufen lässt
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag von Hroudtwolf »

Code: Alles auswählen

Declare keys()
Declare ansicht()
InitSprite():InitKeyboard()
Dim text$(60)
Global zeile
zeile=1
If OpenScreen (800,600,16,"schreiben")


Repeat
FlipBuffers()
ClearScreen(0,0,0)
ansicht()
ExamineKeyboard()
keys()
Until KeyboardPushed(#pb_key_Escape)
End

EndIf 


Procedure keys()
If KeyboardReleased(#pb_key_a):text$(zeile)=text$(zeile)+"a":EndIf 
If KeyboardReleased(#pb_key_b):text$(zeile)=text$(zeile)+"b":EndIf 
If KeyboardReleased(#pb_key_c):text$(zeile)=text$(zeile)+"c":EndIf 
If KeyboardReleased(#pb_key_d):text$(zeile)=text$(zeile)+"d":EndIf 
If KeyboardReleased(#pb_key_e):text$(zeile)=text$(zeile)+"e":EndIf 
;etc....
If KeyboardReleased(#pb_key_return):zeile=zeile+1:EndIf 
EndProcedure 


Procedure ansicht ()
If  StartDrawing (ScreenOutput())
DrawingMode(1)
FrontColor (255,255,255)
For x=1 To 60
Locate (10,x*10)
einzel$=text$(x)
DrawText (einzel$)
Next x
StopDrawing()
EndIf 
EndProcedure 
ich hoffe es hilft dir !

Verbesserungsidee: das ganze vorher in ein Sprite rendern.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

@captain third War schon recht müde... Hab außerdem kein PB zur Hand und konnte nicht testen
Benutzeravatar
captain third
Beiträge: 194
Registriert: 12.12.2004 13:14
Kontaktdaten:

Beitrag von captain third »

@ wolf
danke
@Keykon
achso....ich danke dir trotzdem für die antwort
natoll,jetzt muss ich noch einen Rechner zusammenbaun der 24 stunden am Tag online ist und meinen Server für mein Projekt Order of Blance laufen lässt
Antworten