Seite 1 von 1

Console Cursor finden! [gelöst]

Verfasst: 18.12.2007 10:18
von SimonSimCity
Hi, Leute

Ich will bei mir so ne kleine Console proggen und hab jetzt das Problem, das ich zwar sagen kann: "setzte Cursor auf X | Y" aber ich kann nicht sagen, dass der Cursor um eine Zeile weiter hoch / runter oder nach links / rechts springen soll...

Hier soll zum Beispiel dieses Zeichen in der Schleife immer wieder überschrieben werden und hinter dem eingegebenen Text erscheinen, egal wie viele Zeichen der Text hat... (ähnlich wie bei Linux oft....)
Habt ihr nen paar Beispiele zu diesem Code:

Code: Alles auswählen

OpenConsole()
  EnableGraphicalConsole(1)
  ClearConsole()
  ConsoleColor(10, 0)
  Print("EF.3B.68.D8@root\>")
  PrintN("     Das geht klar!")
  Input()
  For i=0 To 200
    Delay(100)
    Print("-")
    Delay(100)
    Print("/")
    Delay(100)
    Print("|")
    Delay(100)
    Print("\")
  Next i
  Input()
  ConsoleColor(12, 0)
  PrintN("  Invaild MemoryProcess!")
  ConsoleColor( 9, 0)
  PrintN("  Console closed")
  Delay(4000)
CloseConsole()
End

Verfasst: 18.12.2007 10:40
von Bisonte
Ich gehe jetzt mal davon aus, das Du eine CursorAnimation meinst.
Dann sollte das mit CursorLocate nicht wirklich das Problem darstellen.

Code: Alles auswählen

Procedure CursorAnim(x.l,y.l,Pause.l,Schleife.l)

  Protected i.l

  For i = 0 To Schleife
    ConsoleLocate(x,y)
    Print("-")
    Delay(Pause)
    ConsoleLocate(x,y)
    Print("\")
    Delay(Pause)
    ConsoleLocate(x,y)
    Print("|")
    Delay(Pause)
    ConsoleLocate(x,y)
    Print("/")
    Delay(Pause)
  Next i

EndProcedure
Dann baust Du in deinen Code zwischen den beiden Inputs() ein :
Cursoranim(0,2,100,200)

Wenn du jetzt nicht die Animation meinst, sorry... grad kein kaffee da um mein hirn zu aktivieren ;)

Edit: Ich sehe gerade... du hast nicht ein einziges mal CursorLocate() benutzt.... sondern ConsoleColor() ...damit kann man den Cursor natürlich nicht setzen ... Drück doch mal F1 und schau dir die Hilfe an... da unter Console schauen....

Verfasst: 18.12.2007 13:18
von SimonSimCity
Du hast mein Problem nicht verstanden! Ich glaube der Theard is besser im ALLGEMEIN-Forum aufgehoben...

Ich wollte so einen Befehl machen, das der Cursor ein Zeichen zurück geht, ohne das ich weiß, wo er jetzt steckt!

Oder auch mal ne Zeile hoch.

Aber halt alles ohne X oder Y vorzugeben, wie du das jetzt gemacht hast.

Was mir auch schon sehr helfen würde ist eine Prozedure zu schreiben, mit der ich einfach nur X Zeichen zurück gehen kann...

Der obere Code sollte ungefähr so was ergeben:
-> Nur jetzt soll halt noch, wenn ich hier mehr Zeichen eingebe soll dann dieser Status automatisch eingerückt werden...

Code: Alles auswählen

Define s1.s, s2.s, s3.s, s4.s, command.s
OpenConsole()
  EnableGraphicalConsole(1)
  ClearConsole()
   ConsoleColor(10, 0)
    ConsoleLocate(0,0)
Sprung:
Print("EF.3B.68.D8@root\>")
Inp.s = Input()

Select Inp
  Case "me.root"
    PrintN("     Das geht klar!")
    For i=0 To 2
      ConsoleLocate(20, 1)
      Delay(100)
      Print("-")
      ConsoleLocate(20, 1)
      Delay(100)
      Print("/")
      ConsoleLocate(20, 1)
      Delay(100)
      Print("|")
      ConsoleLocate(20, 1)
      Delay(100)
      Print("\")
      ConsoleLocate(20, 1)
    Next i 
    PrintN(" ")
    Goto Sprung
EndSelect

ConsoleColor(12, 0)
PrintN("  Invaild MemoryProcess!")
ConsoleColor( 9, 0)
PrintN("  Console closed")
Delay(4000)
CloseConsole()
End

Verfasst: 18.12.2007 14:03
von bobobo
sowas?

Code: Alles auswählen

Define s1.s, s2.s, s3.s, s4.s, command.s 
prompt.s="EF.3B.68.D8@root\>"
y=0

OpenConsole() 
  EnableGraphicalConsole(1) 
  ClearConsole() 
   ConsoleColor(10, 0) 
    ConsoleLocate(0,0) 
Sprung: 

Print(prompt)
ConsoleLocate(Len(prompt),y) 
Inp.s = Input() 
y+1

Select Inp 
  Case "me.root" 
    PrintN("     Das geht klar!")
    l=Len("     Das geht klar!")+1
    ConsoleCursor(0) 
    For i=0 To 2 
      ConsoleLocate(l, y) 
      Delay(100) 
      Print("-") 
      ConsoleLocate(l, y) 
      Delay(100) 
      Print("/") 
      ConsoleLocate(l, y) 
      Delay(100) 
      Print("|") 
      ConsoleLocate(l, y) 
      Delay(100) 
      Print("\") 
      ConsoleLocate(l, y) 
    Next i 
    ConsoleCursor(1)
    
    PrintN(" ") 
    y+1
    Goto Sprung 
EndSelect 

ConsoleColor(12, 0) 
PrintN("  Invaild MemoryProcess!") 
ConsoleColor( 9, 0) 
PrintN("  Console closed") 
Delay(4000) 
CloseConsole() 
End
GOTO :allright:

Verfasst: 18.12.2007 14:20
von SimonSimCity
DANKE!

Das is genau das gesuchte...

Is zwar sehr simpel gelöst, aber darauf bin ich jetzt nicht gekommen :)

:allright: :allright: :allright:

Verfasst: 18.12.2007 16:01
von Bisonte
;) Wusst ich's doch... ohne Kaffee.... nix verstehen ;) aber ne Procedure, die das Print ersetzen würde hätt ich dann auch noch gehabt ;) ohne dass man weiss wo der Cursor steht....

Verfasst: 18.12.2007 18:10
von SimonSimCity
@Bisonte:

Kannst du die Procedure auch noch mal posten (wenn du sie so auf die Schnelle findest...) ?
vlt kann die ein anderer, der diesen Theard liest besser gebrauchen...