| |
|
|
Jörg Sellmeyer | ¡Hola,
Como podría Soy un Zähler realisieren, el quasi con voller Geschwindigkeit zählt, während mein Hauptprogramm en el Waitinput en una Eingabe wartet? Mit folgendem pequeño Code es el Zähler. Wenn Yo aber el Ratón bewege rast él los. Diese Geschwindigkeit bräuchte Yo dauernd. Gibt lo una Message, el dauernd übermittelt se? Ein Temporizador es en cada Fall a langsam.
|
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 27.09.2011 ▲ |
|
|
|
|
Nico Madysa | In XProfan X2 wäre el wohl con Multiprozessing a lösen.
RGH
So sería etwa el oft gefragte Tiempo en el Titelzeile gelöst voluntad:
Ansonsten wären Hilos una solución. Posesiones con XPSE y NProcs algo hingezimmert bekommen, el etwa el macht, qué du willst:
{$cleq}
Cls
nproc Temporizador
parámetros addr&
whilenot Largo(addr&,0) < 0
Sleep(1)
Largo addr&,0 = Largo(addr&,0) + 1
SetText %hWnd,str$(Largo(addr&,0))
if Largo(addr&,0) >= 385
Largo addr&,0 = 0
BitBlt(%hDC,0,0,4000,500,%hDC,0,0,WHITENESS)
endif
wend
ExitThread(0)
ENDPROC
var id& = 0
var exit& = 0
declarar count#
dim count#,4
CreateThread(0,0,ProcAddr(Temporizador,1),count#,0,Addr(id&))
Screen 4000,500
Mientras que 1
WaitInput
Título de la ventana Str$(Largo(count#,0))
If IsKey($20)
DrawText Largo(count#,0) * 10,40,"!"
ElseIf IsKey(27)
Largo count#,0 = -10
Romper
EndIf
Wend
if GetExitCodeThread(id&,Addr(exit&)) = STILL_ACTIVE
whileloop 5
imprimir "Thread todavía aktiv ..."
Sleep 100
casenot GetExitCodeThread(id&,Addr(exit&)) = STILL_ACTIVE : romper
EndWhile
caso GetExitCodeThread(id&,Addr(exit&)) = STILL_ACTIVE : TerminateThread(id&,0)
endif
Disponer count#
end
Natürlich son algunos Dummejungenfehler drin, aber zumindest en me funktioniert lo. Hier el Exe: Descargar externer Descargar |
|
|
| |
|
|
|
| @Jörg: Windows zählt ya siempre z.B. en getTickCount ^ ^ -
si Usted also para Zeitpunkt X el getTickCount merkst entonces kannst siempre por Differenz ermittelt como weit ("im Hintergrund") gezählt wurde.
Jörg Sellmeyer (27.09.11)
Diese Geschwindigkeit bräuchte Yo dauernd. Gibt lo una Message, el dauernd übermittelt se?
Noe -
el Programa wäre sonst auch "immer" busy. ^ ^ |
|
|
| |
|
|
|
RGH | ¿Por qué no con un eigenen Prozess:
Declarar hFileMap&, Buffer#, Counter%
Dim Buffer#, 5' Platz para una LongInt + 1 CLS-Flag
Proc Counter
' Eigener Prozess, por lo tanto kein globaler Variablenzugriff
Declarar c_hFileMap&, c_Buffer#, c_Counter%
Dim c_Buffer#, 5' Platz para una LongInt
c_hFileMap& = FileMap("Open", "Counter")
c_Counter% = 0
' Speicherdate existiert: los va's con Zählen
If c_hFileMap&
c_Buffer# = FileMap("Map", c_hFileMap&)
Largo c_Buffer#, 0 = c_Counter%
Byte c_Buffer#, 4 = 0' CLS-Flag en 0
Mientras que 1
Sleep 10' Für Testzwecke para mejor Nachvollziehen
Inc c_Counter%
If c_Counter% = 385
c_Counter% = 1
Byte c_Buffer#, 4 = 1' CLS-Flag en 1
EndIf
Largo c_Buffer#, 0 = c_Counter%
EndWhile
Disponer c_Buffer#
FileMap("Close", c_hFileMap&)
Más
MessageBox("Speicherdatei podría no geöffnet voluntad!", "MAP-Hinweis", 48)
EndIf
ENDPROC
CLS
Screen 4000,500
counter% = 0
hFileMap& = Crear("FileMap", "Counter", 4)
If hFileMap&
Buffer# = FileMap("Map", hFileMap&)
Más
MessageBox("Speicherdatei podría no erstellt voluntad!", "Hinweis", 48)
EndIf
' Speicherdatei es vorbereitet: Der Prozess Conter kann comenzó voluntad
var hCounter& = PExec("|Counter")
Mientras que 1
WaitInput
Counter% = Largo(Buffer#, 0)
If Byte(Buffer#, 4 = 1)
CLS
Byte Buffer#, 4 = 0' CLS-Flag zurücksetzen
EndIf
Título de la ventana Str$(Counter%)
If IsKey($20)
DrawText Counter% * 10,40,"!"
ElseIf IsKey(27)
Romper
EndIf
EndWhile
' Conter-Prozess final!
process("kill", hCounter&, 0)
Disponer Buffer#
FileMap("Close", hFileMap&)
End
Saludo Roland
EDIT: Como war alguien más rápido, si auch algo anders ... |
|
|
| XProfan X2Intel 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)
¿Por qué no con un eigenen Prozess:
El Initialisierung es desafortunadamente muy Systemlastig! |
|
|
| |
|
|
|
Nico Madysa | RGH (27.09.11)
¿Por qué no con un eigenen Prozess:
Weil Yo como el Adressen no así simplemente hätte transferencia puede. Yo habe el código sólo fix antes el Mittagessen hingepinselt y quería mich no aún en Filemaps einlesen. Aber así, como du's gemacht hast, geht's natürlich auch. |
|
|
| |
|
|
|
Jörg Sellmeyer | Yo hab's me ya pensamiento. Tiempo schaun, qué se como hacer läßt. Tuve gehofft, el ließe se (Dank Wunderwaffe Subclassing) en un Programa erledigen. Gracias para el Y sugerencias Codes! |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.09.2011 ▲ |
|
|
|
|
| Como wäre lo con Opcode a el createThread-API transferencia sodass Usted a uno Speicherstelle siempre una Zählerwert hast? |
|
|
| |
|
|
|
Jörg Sellmeyer | Das sagt me nix |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 28.09.2011 ▲ |
|
|
|
|
| Como rápidamente se porque gezählt voluntad? Yo nehme no a el Usted con 100% CPU-Last "zählen" möchtest por qué Yo el frage. Yo podría entonces z.B. simplemente bisl nativen Opcode en una Zona escribir y el por createThread a Ausführung anweisen. |
|
|
| |
|
|
|
Jörg Sellmeyer | Ah sí. Yo glaube, daß con el Zählen funktioniert así ya. Im Moment nervt mich algo Anderes. Melde mich otra vez. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 29.09.2011 ▲ |
|
|
|