Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1037 Wohnort: Niederbayern
|
Verfasst am: 12.05.2013, 22:56 Titel: INPUT bei einem Countdowntimer? |
|
|
Ich habe ja so einen Countdowntimer in einem meiner Programme drin.
Nun ist es aber so, dass dieser bei Input nicht mehr funktioniert. Programm stoppt! Gibt es eine Möglichkeit trotz Eingabe von Zahlen bzw. Buchstaben die Zeit auf Null laufen zu lassen. Wahrscheinlich nicht oder? Wenn dann möglicherweise ohne Input-Befehl???
Meine 1. Idee klappt leider nicht. Auch die 2. Idee war nicht erfolgreich. Und eine 3. Idee habe ich bisher nicht.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 12.05.2013, 23:18 Titel: |
|
|
Da wirst du dir wohl eine eigene INPUT-Routine schreiben müssen.
Code: | DIM AS STRING taste, eingabe
DO
taste = INKEY
IF taste = CHR(13) THEN EXIT DO ' Return-Taste
IF taste <> "" THEN
eingabe &= taste
PRINT taste;
END IF
' Hier jetzt noch die Countdown-Umsetzung
' ...
SLEEP 1
LOOP |
Da muss natürlich noch die Backspace-Taste rein, und dann kann man es noch beliebig erweitern (Pfeiltasten und Einfügen an der Cursorposition, nur Einfügen der druckbaren Zeichen, ...), aber dazu gibt es bereits eine Menge Vorschläge im Forum und im Portal. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Eternal_pain
Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 12.05.2013, 23:28 Titel: |
|
|
Würde es sehr ähnlich lösen wie nemored, das ganze könnte man auch als Funktion ausbauen zB. so:
Code: |
Function Eingabeverarbeitung(byval InkeyString as String, byref InputString as String) as Integer
Static EingabeString as String
Dim Status as Integer = 0
Dim EingabeChar as UByte
Dim StringLen as Integer = Len(InkeyString)
For l as Integer = 0 to StringLen-1
EingabeChar = InkeyString[l]
Select Case as Const EingabeChar
Case 13 ''Enter
InputString = EingabeString
Status = NOT 0 ''Eingabe bestätigen (Rückgabewert TRUE)
EingabeString="" ''Eingabe leeren
Case Else ''Alle anderen 'Zeichen' der Eingabe hinzufügen
EingabeString += chr(EingabeChar)
If (Status = 0) Then InputString = EingabeString
End Select
Next l
Return Status
End Function
Dim KeyboardBuffer as String
Dim InputString as String
Do
KeyboardBuffer = Inkey
'viel programm kram....
If Eingabeverarbeitung(KeyboardBuffer, InputString) = 0 Then 'solange Enter nicht gedrückt wurde
locate 1,1:?InputString 'Eingabe Anzeigen
Else
''Eingabe verarbeiten...
?"Du hast " & InputString & " Eingegeben."
End If
'noch mehr programmkram
Loop until multikey(&h01)
|
Ist vom Prinzip fast genauso, auch hier müsste noch backspace ect. eingebaut werden... _________________
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 13.05.2013, 00:05 Titel: |
|
|
Ich persönlich würde ja darauf zurückgreifen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Eternal_pain
Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 13.05.2013, 00:09 Titel: |
|
|
Ich wusste das wir irgendwo sowas ähnliches schon mehrfach (auch schon öffter hier im Forum) hatten, habs nur irgendwie nicht gefunden _________________
|
|
Nach oben |
|
|
|