Seite 2 von 2

Verfasst: 27.01.2006 23:07
von ts-soft
Achso, Du hast Dir meinen Code nicht angesehen /:->

Verfasst: 27.01.2006 23:23
von Tsuki-Namida
Ja okay... da müsste ein Pipen zuhören sein über den system speeker (ist bei mir defekt) aber wie kann ich eine aktion nach abgelaufener zeit machen???

Verfasst: 27.01.2006 23:26
von ts-soft
Alle was in in der Procedure Timer steht, wird alle soundsoviel Sekunden, siehe Inputrequester, ausgeführt. Also schreib was anderes rein, was er anstatt von beep machen soll.
Er wird es dann, alle soundsoviel Sekunden ausführen, bis das Fenster geschlossen wird. Im Fenster kannste alles andere Einbauen, was du brauchst. Der Timer arbeitet unabhängig ständig weiter.

Verfasst: 27.01.2006 23:35
von Tsuki-Namida
ach sorum läuft das :roll:

naja jedenfals danke :)

Verfasst: 28.01.2006 20:29
von Tafkadasom2k5
Heyho!
ne andere Möglichkeit fürn Timer:

Code: Alles auswählen

for i=0 to 10000
 delay(1)
 windowevent()
next
Wartet 10 Sekunden, und das Fenster ist noch zu gebrauchen..
Ist nicht immer genau, (jenachdem wieviele Callback-Prozeduren du in diese Schleife einbaust) aber es funktioniert und ist soweit ich weis plattforunabhängig und verständlich...

Gr33tz
Tafkadasom2k5

Verfasst: 28.01.2006 21:28
von ts-soft
@Tafkadasom2k5
Vielleicht liest Du erstmal, worum es geht. Es ging einzig und allein, um eine Lösung ohne Delay :twisted:

Verfasst: 28.01.2006 23:05
von Tafkadasom2k5
ts-soft hat geschrieben:@Tafkadasom2k5
Vielleicht liest Du erstmal, worum es geht. Es ging einzig und allein, um eine Lösung ohne Delay :twisted:
LOL und jetzt ließt du mal genau, bevor du hier den Macker makierst ;)

Magix-Soft<Kain> hat geschrieben:
ich kann allerdings nicht mit Delay arbeiten weil ja das Programm an für diese Zeit still stehen bleibt und das darf nicht passieren da man auch andere aktionen werend dieser zeit machen kann.


Ja nee, aber sonst hast du schon irgendwie recht... -.- :roll:

Gr33tz
Tafkadasom2k5 :allright: /:->

P.S.:Is nur Spaß, weissu doch :allright: :)

Verfasst: 28.01.2006 23:17
von ts-soft
Tafkadasom2k5 hat geschrieben: LOL und jetzt ließt du mal genau, bevor du hier den Macker makierst ;)
Zu meiner Zeit hieß es noch "großen Macker" :mrgreen:

Deine Lösung ist in einem ereignisgesteuerten Windows-Programm eigentlich nicht nutzbar, da alle Ereignisse, ausser die von Windows autom. abgearbeiten, verpuffen.

Verfasst: 28.01.2006 23:24
von Tafkadasom2k5
ts-soft hat geschrieben:
Tafkadasom2k5 hat geschrieben: LOL und jetzt ließt du mal genau, bevor du hier den Macker makierst ;)
Zu meiner Zeit hieß es noch "großen Macker" :mrgreen:

Deine Lösung ist in einem ereignisgesteuerten Windows-Programm eigentlich nicht nutzbar, da alle Ereignisse, ausser die von Windows autom. abgearbeiten, verpuffen.
Ja, da hast du recht :)

Genau aus dem Grund schrieb ich folgendes:
[...],(jenachdem wieviele Callback-Prozeduren du in diese Schleife einbaust) [...]


Genau das sollte das eben heissen...hab michn bissl blöd ausgedrückt..

Also nochmal, nicht dass jetzt jemand denkt "das geht jetzt einfach so":
In meiner Prozedur muss IN der For-Schleife ein eigenes Event-Handling stattfinden.
Zumindest das gröbste. Ich mach deshalb bei solchen progs für das gesamte Event-Handling immer eine eigene Prozedur, sodass man diese überall frei hinsetzen kann.

Gr33tz
Tafkadasom2k5

EDIT:Hoffe, dass ich den Missverständnis-Modus erfolgreich deaktivieren konnte ;)

Verfasst: 29.01.2006 01:13
von Toshy
Hi,

das ist doch ganz einfach:

Code: Alles auswählen

OpenConsole()


EndTime.l = ElapsedMilliseconds() ;Endzeit - milisekunden 
DifTime.l = ElapsedMilliseconds() 


DifStartTime.l = ElapsedMilliseconds() ;Startzeit - milisekunden ;Vorlagecode fr dein Programm
DifTime.l = 1000 * 3;Zeit zwischen den Ausfhrungen in Millisekunden  ;Vorlagecode fr dein Programm
PrintN("Starte und warte 3 Sekunden.")

Repeat
  If Abs(ElapsedMilliseconds() - DifTime) > DifStartTime ;Vorlagecode fr dein Programm
    PrintN("es sind wieder 3 Sekunden um.") ;Vorlagecode fr dein Programm
    DifStartTime.l = ElapsedMilliseconds() ;Neue Startzeit setzen ;Vorlagecode fr dein Programm
  EndIf ;Vorlagecode fr dein Programm
  Delay(1) ; kann weggelassen werdne, ist nur damit im Beispiel der Prozessor nich voll ausgelastet wird.
Until 0

CloseConsole()
das ABS() sollte auf jedenfall benutzt werden, damit es auch dann klappt, denn der zähler duch das Bebriebssytem auf Null gesetzt wird. bei Windows98 passiert das glaube ich nach 49 Tagen.
Besser wäre für den Falls noch eine If-Abfrage, aber dürfte so auch gehen.

Bei dem Code ist es vollkommen egal was im Programm geschieht, sobald mehr als X Millisekunden vorbei sind, wird der Code ausgeführt. Man muß nur drauf achten, das ein Wartebefehl auch unterbrochen wird oder je nach Code halt ein Thread genutzt wird.


Gruß
Thorsten