![]() |
"Hintergrund"-Prozedur
Hi,
wie kann ich eine Prozedur als "Hintergrund"-Prozedur ablaufen lassen. Darin enthalten sind eine Reihe von if-Schleifen, die bei einem bestimmten Status des Programms oder einer Variablen eine andere Prozedur aufrufen. Geht das? Wenn ja, wie? Ein Beispiel: (Krankheitssimulator)
Delphi-Quellcode:
var
Form1 : TForm; AnzahlFiguren : Integer; x : Integer; Gesundheit : Double; // Gesundheit der Figur in Prozent // FigurIstTod(x : Integer) ist eine Prozedur zum löschen einer "toten" Figur // In der Hintergrundprozedur: for x := 1 to AnzahlFiguren do if Gesundheit < 10 then FigurIstTod(x); |
Re: "Hintergrund"-Prozedur
schau dir mal
![]() ruf doch die procedur immer auf wenn sich eine figur verletzt, bewegt, schießt oder sonstewann |
Re: "Hintergrund"-Prozedur
Die Suche zeigt aber sehr viele Themen an! Geht das nicht spezifischer? :roll:
Das Programm, welches ich als Beispiel genommen habe existiert eigentlich nicht... Es war nur ein Beispiel... :o Was ist wenn ich die Position des Cursors oder einen Tastendruck im IF überprüfe? :gruebel: |
Re: "Hintergrund"-Prozedur
nimm doch n timer
|
Re: "Hintergrund"-Prozedur
:gruebel:
Was bedeutet TIMER? ('Tschuldigung, ich bin noch relativ neu in Delphi) |
Re: "Hintergrund"-Prozedur
TTimer ist eine Komponente, die einen festlegbaren code in bestimmten Perioden ausführt.
|
Re: "Hintergrund"-Prozedur
palette ->system
|
Re: "Hintergrund"-Prozedur
und
![]() |
Re: "Hintergrund"-Prozedur
Das bringt aber nichts, wenn ich dauerhaft mein Programm "überwachen" will.
Wenn ich TIMER benutzte, könnte es dann einen OnClick registrieren? |
Re: "Hintergrund"-Prozedur
Also ein OnCLick bekommst du ja eh mit^^ wieso willst du das später noch mal mitkriegen?
|
Re: "Hintergrund"-Prozedur
damit überwachst du ja ständig dein programm^^
|
Re: "Hintergrund"-Prozedur
Bitte keinen Timer. Nimm nen Thread und schicke eine Fensternachricht an dein Hauptfenster, wenn du mit diesem kommunizieren willst. Endlosschleifen sind entgegen der obigen Aussage keinerlei Problem - das System selbst plant die Threads in einer Endlosschleife! Man sollte nur daran denken, daß die Schleife nicht "zu eng" ist, sondern mit "Sleep(0)" oder einem ähnlichen Aufruf regelmäßig Rechenzeit abgeben. Ansonsten sieht es im Taskmanager so aus, als würde dein Programm die meiste CPU-Zeit fressen. Wenn du noch ein "echtes" Sleep (mit Wert größer 0) hintanstellst, kann nix mehr schiefgehen.
Übrigens, meines Erachtens schreibt sich auch nach der Schlechtschreibreform "tot" als Adverb oder Adjektiv mit tot, hingegen das Substantiv Tod ... |
Re: "Hintergrund"-Prozedur
Also ich würds mit nem DirectInput aus den
![]() |
Re: "Hintergrund"-Prozedur
@Olli: dito^^
@qb-tim: was ist das für ein Programm/was macht die schleife? |
Re: "Hintergrund"-Prozedur
Hatter doch im 1. Beitrag gesagt.
|
Re: "Hintergrund"-Prozedur
Ich weiß nicht, was hier immer alle mit Timern wollen. Könnt ihr die Vorstellung nicht ertragen, daß ein Programm mal nicht der Reihe nach abgearbeitet wird? Denn auch mit Timern ist das Programm noch immer eine Schleife. Mit einem weiteren Thread sind es schon zwei.
Mal ehrlich, DOS ist quasi tot. Wir sind auf dem besten Wege, daß jedes Desktopsystem eine Mehrprozessorsystem wird, 64bit-Systeme werden aktuell und ihr dümpelt noch immer mit den archaischen Vorstellungen von vor 10 Jahren vor euch hin :roll: :| :stupid: |
Re: "Hintergrund"-Prozedur
@3_of_8:
Zitat:
|
Re: "Hintergrund"-Prozedur
Zitat:
Mein Programm würde fast jede denkbare Funktion überwachen. Aber hauptsächlich die Variablen, ob sie über oder unter einer bestimmten Grenze liegen... |
Re: "Hintergrund"-Prozedur
Dann kontrolliere doch einfach den Zugriff auf deine Variablen ... dass schreit nach einer Klasse mit einer Property, die die Variable vertritt ... soll die Variable geändert werden, wird zuerst der neue Wert überprüft und dann abhängig davon gehandelt!
mfG Markus |
Re: "Hintergrund"-Prozedur
Ist das nicht vollkommene Ressourcenverschwendung hier einen Timer zu verwenden? Das wurde hier mehrfach empfohlen, was mich sehr verwundert. Man könnte doch eine Message senden oder die Prozedur einfach aufrufen, wann immer eine Spielfigur stirbt.
Und zum Zeichnen wäre OnIdle am sinnvollsten. Edit: Hat Olli schon gesagt, hab Seite2 übersehen; sorry :oops: |
Re: "Hintergrund"-Prozedur
Wie gesagt habe ich das vorgeschlagen, das war ihm zu kompliziert. Für was kleineres geht auch ein Timer. Und hättest du richtig gelesen, wüsstest du auch das ich GENAU das vorgeschlagen hab, es allerdings nicht um eine Spielfigur geht, das iszt nur ein beispiel
|
Re: "Hintergrund"-Prozedur
Zitat:
Nehmen wir mal das Beispiel mit den sterbenden Figuren... Gut wäre dann:
Delphi-Quellcode:
Wie deklariere ich die?
Figur[x].Gesundheit // Integer
Figur[x].Lebend // Boolean (False = Tod) // usw. |
Re: "Hintergrund"-Prozedur
Neue Frage -> Neuer Thread.
Wird sonst zu unübersichtlich hier. Du müsstest die Eigentschaften als Array deklarieren |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz