Español
Fuente/ Codesnippets

Sleep 10000 con Abbruch innerhalb dieser Tiempo

 
- Página 1 -



RudiB.
¡Hola zusammen,

habe veces otra vez una Cuestión.
ifnot ende%

    Sleep 1000 * pause%

Endif


kann Yo während des SLEEP's una Abbruch de Sleep erzwingen ?
z.B. con wm_Timer Función ??
 
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
28.04.2020  
 



« Dieser Contribución wurde como Solución gekennzeichnet. »


Georg
Teles
Posesiones algo rumgespielt, hier bastante simpel
Declarar e%, oWndProc&
Declarar neu%, final%
Declarar trigger&, wartezeit&
Declarar frage%, antwort%
Declarar frage$, antwort$
Declarar zeit%
Def GetWindowLong(2)!"USER32","GetWindowLongA"
Def SetWindowLong(3)!"USER32","SetWindowLongA"
Def KillTimer32(2)!"USER32","KillTimer"
Def SetTimer32(4)!"USER32","SetTimer"
CLS
frage$ = "Frage: Wieviel es 44 * 5 ?"
antwort$ = "Lösung: 220"
frage% = Crear("Text",%hWnd,frage$,5,5,255,20)
antwort% = Crear("Text",%hWnd,"Lösung:",5,30,255,20)
zeit% = Crear("Text",%hWnd,"",100,61,65,20)
neu% = Crear("Button",%hWnd,"näch. Frage",5,60,90,20)
beenden% = Crear("Button",%hWnd,"beenden",170,60,90,20)

Proc tmpr

    Inc wartezeit&

    If trigger& = 1

        SetText antwort%,antwort$+" (por ESC ausgelöst)"
        wartezeit& = 0
        SetText zeit%,""

    Más

        SetText zeit%,Str$(10-(wartezeit&)\3)+" Sek."

    EndIf

    If wartezeit& >= 3*10

        SetText antwort%,antwort$+" (Wartezeit vorbei)"
        wartezeit& = 0
        SetText zeit%,""

    EndIf

ENDPROC

SetTimer32(%hWnd,1,333,ProcAddr("tmpr",0))
oWndProc& = GetWindowLong(%hWnd,-4)
Claro e%, trigger&, wartezeit&

Sinestar encargado e%

    Waitinput
    ' Trigger auslösen

    If (%Key = 27) or (%Key = 2)

        locate 1,1
        trigger& = 1

    EndIf

    ' nächste Cuestión + Trigger en 0

    If Clicked(neu%)

        frage$ = "Frage: Hauptstadt de Deutschland ?"
        antwort$ = "Lösung: Berlin"
        SetText frage%,frage$
        SetText antwort%,"Lösung:"
        Claro trigger&, wartezeit&
        SetFocus(%hWnd)

    EndIf

    ' Programa direkt final

    If Clicked(final%)

        Inc e%

    EndIf

EndWhile

KillTimer32(%hWnd,1)
SetWindowLong(%hWnd,-4,oWndProc&)

hier con Arrays como Cuestión/Solución
Declarar e%, oWndProc&
Declarar neu%, final%
Declarar trigger&, wartezeit&
Declarar frage%, antwort%
Declarar fragen$, antworten$
Declarar frage$[], antwort$[]
Declarar zufall&, zeit%
Def GetWindowLong(2)!"USER32","GetWindowLongA"
Def SetWindowLong(3)!"USER32","SetWindowLongA"
Def KillTimer32(2)!"USER32","KillTimer"
Def SetTimer32(4)!"USER32","SetTimer"
Selección aleatoria
CLS
fragen$ = "Wieviel es 44 * 5 ?;Hauptstadt de Deutschland ?;2^4 - 2 ?;Wurzel de 27 ?"
antworten$ = "220;Berlin;14;3"
frage$[] = explode(fragen$,";")
antwort$[] = explode(antworten$,";")
zufall& = Rnd(4)
frage% = Crear("Text",%hWnd,frage$[zufall&],5,5,255,20)
antwort% = Crear("Text",%hWnd,"",5,30,700,20)
zeit% = Crear("Text",%hWnd,"",100,61,65,20)
neu% = Crear("Button",%hWnd,"näch. Frage",5,60,90,20)
beenden% = Crear("Button",%hWnd,"beenden",170,60,90,20)

Proc tmpr

    Inc wartezeit&

    If trigger& = 1

        SetText antwort%,antwort$[zufall&]+" (por ESC ausgelöst) o Wartezeit vorbei s. \qAUSLÖSER\q"
        wartezeit& = 0
        SetText zeit%,""

    Más

        SetText zeit%,Str$(10-(wartezeit&)\3)+" Sek."' de 10 Sekunden Tiempo abziehen

    EndIf

    If wartezeit& >= 3*10' 10 Sekunden

        ' así el Tiempo no mehr rückwärts se ejecuta, kann dieser Schritt ausgelassen y ser
        ' sólo trigger = 1 gesetzt, como Solución auch Oben adecuado se, siehe oben
        trigger& = 1'AUSLÖSER
        'SetText antwort%,antwort$[zufall&]+" (Wartezeit vorbei)"
        'wartezeit& = 0
        'SetText zeit%,""

    EndIf

ENDPROC

SetTimer32(%hWnd,1,333,ProcAddr("tmpr",0))
oWndProc& = GetWindowLong(%hWnd,-4)
Claro e%, trigger&, wartezeit&

Sinestar encargado e%

    Waitinput
    ' Trigger auslösen

    If (%Key = 27) or (%Key = 2)

        locate 1,1
        trigger& = 1

    EndIf

    ' nächste Cuestión + Trigger en 0

    If Clicked(neu%)

        zufall& = Rnd(4)
        SetText frage%, frage$[zufall&]
        SetText antwort%,""
        Claro trigger&, wartezeit&
        SetFocus(%hWnd)

    EndIf

    ' Programa direkt final

    If Clicked(final%)

        Inc e%

    EndIf

EndWhile

KillTimer32(%hWnd,1)
SetWindowLong(%hWnd,-4,oWndProc&)

Tal vez kannst Usted algo así anfangen

Grüße Georg
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

02.05.2020  
 




RudiB.
Sombrero se ya hecho...

Posesiones una solución gefunden en más rápido / Rápidamente de el Sleep rauszukommen.
Whileloop 20

    If @IsKey(27)

        ende%=1
        romper

    Endif

    Sleep 50 * pause%

EndWhile


 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
28.04.2020  
 




Georg
Teles
Bueno Tag,

aah ha se hecho weiß' sí no, qué du antes hast, pero yo hatte una Vorschlag, wo du rumexperementieren kannst
Declarar e%, t&, oWndProc&
Def GetWindowLong(2)!"USER32","GetWindowLongA"
Def SetWindowLong(3)!"USER32","SetWindowLongA"
Def KillTimer32(2)!"USER32","KillTimer"
Def SetTimer32(4)!"USER32","SetTimer"

Proc tmpr

    Localizar 1,1
    imprimir time$(0);":";time$(1);" - ESC drücken, en Temporizador a beenden"
    imprimir "verschiebe Ventana, Temporizador aktualisiert todavía esta Text"

ENDPROC

CLS
var Button% = Crear("Button",%hWNd,"teste",20,50,100,20)
t& = SetTimer32(%hWnd,1,333,ProcAddr("tmpr",0))
oWndProc& = GetWindowLong(%hWnd,-4)
Claro e%

Sinestar encargado e%

    Waitinput

    If (%Key = 27) or (%Key = 2)

        Localizar 1,1
        'Case t&:KillTimer32(%hWnd,1)

        If t& = 1

            KillTimer32(%hWnd,1)
            t& = 0

        EndIf

        imprimir space$(23)+"ABBRUCH"+space$(23)
        'Inc e% '= ENDE

    EndIf

    '-------------------------------------------------

    If t& = 0

        ' tu qué, si Temporizador weg es

    EndIf

    ' eleganter hier, si Button UND Temporizador = 1

    If (Clicked(Button%)) AND (t& = 1)

        locate 5,20
        imprimir "nix geschieht"
        SetFocus(%hWnd)

    EndIf

    ' eleganter hier, si Button UND Temporizador = 0

    If (Clicked(Button%)) AND (t& = 0)

        locate 5,20
        imprimir "was ahora? (X oben rechts en a final)"

    EndIf

EndWhile

SetWindowLong(%hWnd,-4,oWndProc&)

Grüße
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

01.05.2020  
 




RudiB.
nun sí, Yo escribir gerade a eimem Vokabe-Trainer. Un Función es hier sólo como en uno "Dia-Show" ...Vokabel se adecuado y anschliessend después de uno einstellbaren Pause (zw. 1 y 10 sek.) se el Antwort eingeblendet. So ha uno eben una gewisse Tiempo el Antwort a überlegen.
Weiß uno el Antwort aber inmediatamente, entonces se el User pero no necesariamente el volle Pausenzeit "absitzen" necesario. Also fuera de el Pause....con ESC, danach sólo más ...
Daher Yo sólo el Pausenzeit verkürzt y una Whileloop-Bucle gelegt.
Vorher 10 sek. Pause al Stück y así entonces sólo aufgeteilt en 20*0,5sek. con el möglichkeit con ESC auszusteigen.

Aber Su Solución es wirklich Super y voluntad esta Solución veces ausgiebig testen y Sicherheit auch con einbauen. Wesentlich eleganter....

Gracias Usted Georg

Saludo de München Rudi
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
01.05.2020  
 




Georg
Teles
Posesiones algo rumgespielt, hier bastante simpel
Declarar e%, oWndProc&
Declarar neu%, final%
Declarar trigger&, wartezeit&
Declarar frage%, antwort%
Declarar frage$, antwort$
Declarar zeit%
Def GetWindowLong(2)!"USER32","GetWindowLongA"
Def SetWindowLong(3)!"USER32","SetWindowLongA"
Def KillTimer32(2)!"USER32","KillTimer"
Def SetTimer32(4)!"USER32","SetTimer"
CLS
frage$ = "Frage: Wieviel es 44 * 5 ?"
antwort$ = "Lösung: 220"
frage% = Crear("Text",%hWnd,frage$,5,5,255,20)
antwort% = Crear("Text",%hWnd,"Lösung:",5,30,255,20)
zeit% = Crear("Text",%hWnd,"",100,61,65,20)
neu% = Crear("Button",%hWnd,"näch. Frage",5,60,90,20)
beenden% = Crear("Button",%hWnd,"beenden",170,60,90,20)

Proc tmpr

    Inc wartezeit&

    If trigger& = 1

        SetText antwort%,antwort$+" (por ESC ausgelöst)"
        wartezeit& = 0
        SetText zeit%,""

    Más

        SetText zeit%,Str$(10-(wartezeit&)\3)+" Sek."

    EndIf

    If wartezeit& >= 3*10

        SetText antwort%,antwort$+" (Wartezeit vorbei)"
        wartezeit& = 0
        SetText zeit%,""

    EndIf

ENDPROC

SetTimer32(%hWnd,1,333,ProcAddr("tmpr",0))
oWndProc& = GetWindowLong(%hWnd,-4)
Claro e%, trigger&, wartezeit&

Sinestar encargado e%

    Waitinput
    ' Trigger auslösen

    If (%Key = 27) or (%Key = 2)

        locate 1,1
        trigger& = 1

    EndIf

    ' nächste Cuestión + Trigger en 0

    If Clicked(neu%)

        frage$ = "Frage: Hauptstadt de Deutschland ?"
        antwort$ = "Lösung: Berlin"
        SetText frage%,frage$
        SetText antwort%,"Lösung:"
        Claro trigger&, wartezeit&
        SetFocus(%hWnd)

    EndIf

    ' Programa direkt final

    If Clicked(final%)

        Inc e%

    EndIf

EndWhile

KillTimer32(%hWnd,1)
SetWindowLong(%hWnd,-4,oWndProc&)

hier con Arrays como Cuestión/Solución
Declarar e%, oWndProc&
Declarar neu%, final%
Declarar trigger&, wartezeit&
Declarar frage%, antwort%
Declarar fragen$, antworten$
Declarar frage$[], antwort$[]
Declarar zufall&, zeit%
Def GetWindowLong(2)!"USER32","GetWindowLongA"
Def SetWindowLong(3)!"USER32","SetWindowLongA"
Def KillTimer32(2)!"USER32","KillTimer"
Def SetTimer32(4)!"USER32","SetTimer"
Selección aleatoria
CLS
fragen$ = "Wieviel es 44 * 5 ?;Hauptstadt de Deutschland ?;2^4 - 2 ?;Wurzel de 27 ?"
antworten$ = "220;Berlin;14;3"
frage$[] = explode(fragen$,";")
antwort$[] = explode(antworten$,";")
zufall& = Rnd(4)
frage% = Crear("Text",%hWnd,frage$[zufall&],5,5,255,20)
antwort% = Crear("Text",%hWnd,"",5,30,700,20)
zeit% = Crear("Text",%hWnd,"",100,61,65,20)
neu% = Crear("Button",%hWnd,"näch. Frage",5,60,90,20)
beenden% = Crear("Button",%hWnd,"beenden",170,60,90,20)

Proc tmpr

    Inc wartezeit&

    If trigger& = 1

        SetText antwort%,antwort$[zufall&]+" (por ESC ausgelöst) o Wartezeit vorbei s. \qAUSLÖSER\q"
        wartezeit& = 0
        SetText zeit%,""

    Más

        SetText zeit%,Str$(10-(wartezeit&)\3)+" Sek."' de 10 Sekunden Tiempo abziehen

    EndIf

    If wartezeit& >= 3*10' 10 Sekunden

        ' así el Tiempo no mehr rückwärts se ejecuta, kann dieser Schritt ausgelassen y ser
        ' sólo trigger = 1 gesetzt, como Solución auch Oben adecuado se, siehe oben
        trigger& = 1'AUSLÖSER
        'SetText antwort%,antwort$[zufall&]+" (Wartezeit vorbei)"
        'wartezeit& = 0
        'SetText zeit%,""

    EndIf

ENDPROC

SetTimer32(%hWnd,1,333,ProcAddr("tmpr",0))
oWndProc& = GetWindowLong(%hWnd,-4)
Claro e%, trigger&, wartezeit&

Sinestar encargado e%

    Waitinput
    ' Trigger auslösen

    If (%Key = 27) or (%Key = 2)

        locate 1,1
        trigger& = 1

    EndIf

    ' nächste Cuestión + Trigger en 0

    If Clicked(neu%)

        zufall& = Rnd(4)
        SetText frage%, frage$[zufall&]
        SetText antwort%,""
        Claro trigger&, wartezeit&
        SetFocus(%hWnd)

    EndIf

    ' Programa direkt final

    If Clicked(final%)

        Inc e%

    EndIf

EndWhile

KillTimer32(%hWnd,1)
SetWindowLong(%hWnd,-4,oWndProc&)

Tal vez kannst Usted algo así anfangen

Grüße Georg
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

02.05.2020  
 




RudiB.
como kann Yo absolut qué con anfangen, ha mich doch igual a uno neuen Concepto inspiriert.
Muss veces schauen como yo ahora en mein Programa einbaue sin lo me a zerschießen.....
Das bekomm Yo ya hin...

Gracias Georg
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
03.05.2020  
 




Georg
Teles
Perfekt

Grüße
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

03.05.2020  
 



Programas, el asynchrone Prozedurenaufrufe en una Proc ansetzen, el sólo para synchrone Enumeration geeignet es, Siempre se puede y scheinbar zufällig jegliche Características des Betriebssystemes aufrufen.

Denke uno, el Call en DeleteFileA es salvo el Adresse kein otro, como el en SetPixel - como reichen para Unglück una zeitversetztes xor eax,eax y unos pocos geeignete Werte en el Stack - viel Glück.

Sleep 10000 kannst Usted sicher con ExitProcess/ TerminateThread etc. "killen"/ debería eben delegiert ser/ voluntad/ o. scheint hier no sinnvoll eingesetzt a voluntad.

"Nicht blockierendes Warten" por Waitinput, sinngemäß:
 
24.09.2020  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

5.731 Views

Untitledvor 0 min.
ScanMaster20.06.2024
Walter31.12.2022
RudiB.08.03.2022
Sven Bader22.09.2021
Más...

Themeninformationen

Dieses Thema ha 3 subscriber:

RudiB. (4x)
Georg Teles (3x)
iF (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie