Français
Forum

Zähler sans Minuteur

 

Jörg
Sellmeyer
Salut,

comment pourrait je une Zähler realisieren, qui quasi avec voller Geschwindigkeit zählt, au cours de mon Hauptprogramm im Waitinput sur une Eingabe wartet?
avec folgendem kleinen Code steht qui Zähler. si je mais qui souris bewege rast il à l'attaque. cet Geschwindigkeit bräuchte je durable. Gibt es une Message, qui durable übermittelt wird? un Minuteur ist sur jeden le cas trop lente.
Cls
Déclarer Counter%

SubClassProc

    'Si SubClassMessage(%hwnd,?)
    Inc Counter%

    Si Counter% = 385

        Counter% = 1
        Cls

    EndIf

    'EndIf

ENDPROC

Sous-classe %hwnd,1
Screen 4000,500

Tandis que 1

    WaitInput
    Titre de la fenêtre Str$(Counter%)

    Si IsKey($20)

        DrawText Counter% * 10,40,"!"

    ElseIf IsKey(27)

        Pause

    EndIf

Wend

Sous-classe %hwnd,0
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
27.09.2011  
 




Nico
Madysa
dans XProfan X2 wäre cela wohl avec Multiprozessing trop lösen.

RGH
So serait etwa qui souvent gefragte Zeit dans qui Titelzeile gelöst volonté:
Proc SetTitleTime

    parameters handle&
    var ende% = 0

    whilenot ende%

        setText handle&, dt("getdate", 6)
        cas getText$(handle&) = » : ende% = 1
        sleep 100

    endwhile

endproc

Randomiser
style de fenêtre 24 + 512
Fenêtre 100,550-500,200
pExec("|SetTitleTime", %hWnd)
var ende% = 0

whilenot ende%

    waitinput
    cas %clé = 2 : ende% = 1

endwhile

end



Ansonsten wären Threads une Solution. Habe avec XPSE et NProcs quelque chose hingezimmert bekommen, cela etwa cela fait, quoi tu veux:
 {$cleq}
Cls

nproc Minuteur

    parameters addr&

    whilenot Long(addr&,0) < 0

        Sleep(1)
        Long addr&,0 = Long(addr&,0) + 1
        SetText %hWnd,str$(Long(addr&,0))

        si Long(addr&,0) >= 385

            Long addr&,0 = 0
            BitBlt(%hDC,0,0,4000,500,%hDC,0,0,WHITENESS)

        endif

    Wend

    ExitThread(0)

ENDPROC

var id& = 0
var exit& = 0
declare count#
dim count#,4
CreateThread(0,0,ProcAddr(Minuteur,1),count#,0,Addr(id&))
Screen 4000,500

Tandis que 1

    WaitInput
    Titre de la fenêtre Str$(Long(count#,0))

    Si IsKey($20)

        DrawText Long(count#,0) * 10,40,"!"

    ElseIf IsKey(27)

        Long count#,0 = -10
        Pause

    EndIf

Wend

si GetExitCodeThread(id&,Addr(exit&)) = STILL_ACTIVE

    whileloop 5

        imprimer "Thread encore aktiv ..."
        Sleep 100
        casenot GetExitCodeThread(id&,Addr(exit&)) = STILL_ACTIVE : pause

    Endwhile

    cas GetExitCodeThread(id&,Addr(exit&)) = STILL_ACTIVE : TerminateThread(id&,0)

endif

Dispose count#
end

Bien sûr sommes quelques Dummejungenfehler drin, mais zumindest chez mir funktioniert es.
ici qui Exe:
Herunterladen
externer Télécharger

1.373 kB
Hochgeladen:27.09.2011
Downloadcounter26
Herunterladen
 
27.09.2011  
 



@Jörg: Windows zählt bereits toujours z.B. dans getTickCount ^ ^ -

si Du Dir alors zum la date X den getTickCount merkst ensuite peux toujours per Differenz ermittelt comment large ("im Hintergrund") gezählt wurde.

Jörg Sellmeyer (27.09.11)
cet Geschwindigkeit bräuchte je durable. Gibt es une Message, qui durable übermittelt wird?


Noe -

cela Programme wäre sonst aussi "immer" busy. ^ ^
 
27.09.2011  
 




RGH
pourquoi pas avec einem eigenen Prozess:
Déclarer hFileMap&, Buffer#, Counter%
Faible Buffer#, 5' place pour un LongInt + 1 CLS-Flag

Proc Counter

    ' Eigener Prozess, daher ne...aucune globaler Variablenzugriff
    Déclarer c_hFileMap&, c_Buffer#, c_Counter%
    Faible c_Buffer#, 5' place pour un LongInt
    c_hFileMap& = FileMap("Open", "Counter")
    c_Counter% = 0
    ' Speicherdate existiert: à l'attaque allez's avec Zählen

    Si c_hFileMap&

        c_Buffer# = FileMap("Map", c_hFileMap&)
        Long c_Buffer#, 0 = c_Counter%
        Byte c_Buffer#, 4 = 0' CLS-Flag sur 0

        Tandis que 1

            Sleep 10' Pour Testzwecke zum besseren Nachvollziehen
            Inc c_Counter%

            Si c_Counter% = 385

                c_Counter% = 1
                Byte c_Buffer#, 4 = 1' CLS-Flag sur 1

            EndIf

            Long c_Buffer#, 0 = c_Counter%

        Endwhile

        Dispose c_Buffer#
        FileMap("Close", c_hFileMap&)

    D'autre

        MessageBox("Speicherdatei konnte pas ouvert volonté!", "MAP-Hinweis", 48)

    EndIf

ENDPROC

CLS
Screen 4000,500
counter% = 0
hFileMap& = Créer("FileMap", "Counter", 4)

Si hFileMap&

    Buffer# = FileMap("Map", hFileMap&)

D'autre

    MessageBox("Speicherdatei konnte pas erstellt volonté!", "Hinweis", 48)

EndIf

' Speicherdatei ist vorbereitet: qui Prozess Conter peux gestartet volonté
var hCounter& = PExec("|Counter")

Tandis que 1

    WaitInput
    Counter% = Long(Buffer#, 0)

    Si Byte(Buffer#, 4 = 1)

        CLS
        Byte Buffer#, 4 = 0' CLS-Flag zurücksetzen

    EndIf

    Titre de la fenêtre Str$(Counter%)

    Si IsKey($20)

        DrawText Counter% * 10,40,"!"

    ElseIf IsKey(27)

        Pause

    EndIf

Endwhile

' Conter-Prozess finissons!
process("kill", hCounter&, 0)
Dispose Buffer#
FileMap("Close", hFileMap&)
Fin

Salut
Roland

EDIT: là était quelqu'un plus rapide, si aussi quelque chose anders ...
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
27.09.2011  
 



RGH (27.09.11)
pourquoi pas avec einem eigenen Prozess:


qui initialisation ist malheureusement très Systemlastig!
 
27.09.2011  
 




Nico
Madysa
RGH (27.09.11)
pourquoi pas avec einem eigenen Prozess:


Weil je là qui Adressen pas so simple hätte transfert peut. j'ai den Code seulement fix avant dem déjeuner hingepinselt et voulais mich pas encore dans Filemaps einlesen. mais so, comment du's gemacht la hâte, geht's naturellement aussi.
 
27.09.2011  
 




Jörg
Sellmeyer
je hab's mir déjà gedacht. la fois schaun, quoi sich là faire läßt. je hatte gehofft, cela ließe sich (Dank Wunderwaffe Subclassing) dans einem Programme erledigen.
merci pour qui Anregungen et Codes!
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
28.09.2011  
 



comment wäre es avec Opcode à qui createThread-API transfert sodass Du à einer Speicherstelle toujours une Zählerwert la hâte?
 
28.09.2011  
 




Jörg
Sellmeyer
cela sagt mir nix
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
28.09.2011  
 



comment vite soll car gezählt volonté? je prends pas à cela Du avec 100% CPU-charge "zählen" vouloir weshalb je cela frage. je pourrait ensuite z.B. simple bisl nativen Opcode dans une Bereich écrivons et den per createThread zur Ausführung anweisen.
 
28.09.2011  
 




Jörg
Sellmeyer
Ah oui. je crois, qui avec dem Zählen funktioniert so déjà. Im Moment nervt mich quelque chose Anderes. S'inscrire mich wieder.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
29.09.2011  
 



répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

2.254 Views

Untitledvor 0 min.
Tango14.07.2017
Jörg Sellmeyer03.12.2015
GDL03.09.2015
Peter Max Müller16.05.2015
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie