 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
goooofy
Anmeldungsdatum: 12.09.2005 Beiträge: 69
|
Verfasst am: 27.07.2006, 21:29 Titel: ON TIMER - Ersatz die 2.! |
|
|
Hallo,
ich weiß, das Thema gabs schonmal hier, aber hat inzwischen jemand einen gleichwertigen ON TIMER- Ersatz entwickelt?
Möchte die Uhrzeit sekundengenau anzeigen lassen, während parallel mein Programm läuft.
Falls nun jemand wie üblich vorschlagen möchte, das Hauptprogramm einfach in eine Schleife zu packen und alle paar Mikrosekunden den timer zu überprüfen.... das funzt nicht! Habe ein großes Programm mit Warteschleifen drin, und aus denen muss der Timer-Handler auch erreicht werden können!
Kann mir jemand helfen? |
|
Nach oben |
|
 |
raph ael
Anmeldungsdatum: 12.04.2006 Beiträge: 472
|
Verfasst am: 28.07.2006, 10:37 Titel: |
|
|
Ich schätze mal, du willst das die Uhrzeit angezeigt wird, während dein Programm arbeitet.
Das müsste so gehen:
Code: |
dim as integer sekunden, threadhandle, stoppen,i,h
declare sub sekAnzeigen()
threadhandle= threadcreate(@sekAnzeigen)
for i = 1 to 20
print "hallo zum "+str$(i)+"ten"
next i
threadwait(threadhandle)
sleep
sub sekAnzeigen()
dim as integer x,y
for h = 1 to 20
y=csrlin
x=pos
locate 21,0
print timer
locate x,y
next h
end sub
|
Ok, muss noch überdacht werden , aber schon ein Ansatz _________________
Zitat: | 1000 Yottabytes sind absurd. 640 Yottabytes sollten genug für jeden sein. |
|
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 28.07.2006, 13:24 Titel: |
|
|
Du musst verhindern, das zwei Programme Gleichzeitig schreiben.
Mal ein Beispiel Code:
Code: | declare sub uhr()
Dim Shared WriteRigth As Integer
Dim handler as integer
WriteRigth = MUTEXCREATE
handler = THREADCREATE(@Uhr)
MUTEXLOCK WriteRigth
locate 2,1
MUTEXUNLOCK WriteRigth
for i=0 to 20
MUTEXLOCK WriteRigth
? "Hallo Welt Nummer ";i;" Test"
MUTEXUNLOCK WriteRigth
sleep 500
next i
sub uhr()
dim csl as integer
dim p as integer
do
MUTEXLOCK WriteRigth
csl=Csrlin
p=Pos
locate 1,1
? time$
locate csl, Pos
MUTEXUNLOCK WriteRigth
sleep 1
loop
end sub |
Da lässt sich auch noch was raus hollen, Betreffs Flimmern:
Code: | declare sub uhr()
Dim Shared WriteRigth As Integer
Dim handler as integer
WriteRigth = MUTEXCREATE
handler = THREADCREATE(@Uhr)
MUTEXLOCK WriteRigth
locate 2,1
MUTEXUNLOCK WriteRigth
for i=0 to 20
MUTEXLOCK WriteRigth
? "Hallo Welt Nummer ";i;" Test"
MUTEXUNLOCK WriteRigth
sleep 500
next i
sub uhr()
dim csl as integer
dim p as integer
dim timeold$
do
if timeold$<>time$ then
MUTEXLOCK WriteRigth
csl=Csrlin
p=Pos
locate 1,1
? time$
locate csl, Pos
timeold$=time$
MUTEXUNLOCK WriteRigth
end if
sleep 10
loop
end sub |
Das einzige was noch zu beachten ist:
Alle Schreibbefehle auf den Bildschirm mit
Code: | MUTEXLOCK WriteRigth
...
MUTEXUNLOCK WriteRigth |
einzuklammern.
Und Finger weg von Zeile 1.
Edit: 29.07.2006 Debug (timeold$=time$) _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|