Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Hintergrund"-Prozedur (https://www.delphipraxis.net/71287-hintergrund-prozedur.html)

qb-tim 12. Jun 2006 16:44


"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);

inherited 12. Jun 2006 16:58

Re: "Hintergrund"-Prozedur
 
schau dir mal Hier im Forum suchenThreads an, allerdings würd ich das nicht unbedingt in einer endlosschleife machen->belastet sehr.
ruf doch die procedur immer auf wenn sich eine figur verletzt, bewegt, schießt oder sonstewann

qb-tim 12. Jun 2006 18:01

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:

inherited 12. Jun 2006 18:24

Re: "Hintergrund"-Prozedur
 
nimm doch n timer

qb-tim 12. Jun 2006 18:33

Re: "Hintergrund"-Prozedur
 
:gruebel:

Was bedeutet TIMER?

('Tschuldigung, ich bin noch relativ neu in Delphi)

mkinzler 12. Jun 2006 18:39

Re: "Hintergrund"-Prozedur
 
TTimer ist eine Komponente, die einen festlegbaren code in bestimmten Perioden ausführt.

inherited 12. Jun 2006 18:45

Re: "Hintergrund"-Prozedur
 
palette ->system

idontwantaname 12. Jun 2006 19:10

Re: "Hintergrund"-Prozedur
 
und Delphi-Referenz durchsuchenTTimer ;-)

qb-tim 13. Jun 2006 09:38

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?

DGL-luke 13. Jun 2006 09:40

Re: "Hintergrund"-Prozedur
 
Also ein OnCLick bekommst du ja eh mit^^ wieso willst du das später noch mal mitkriegen?

inherited 13. Jun 2006 11:22

Re: "Hintergrund"-Prozedur
 
damit überwachst du ja ständig dein programm^^

Olli 13. Jun 2006 11:32

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 ...

3_of_8 13. Jun 2006 11:36

Re: "Hintergrund"-Prozedur
 
Also ich würds mit nem DirectInput aus den Hier im Forum suchenDelphiX Komponenten lösen, dann nen Timer mit Interval 0 zum Zeichnen der Grafiken und einen mit Interval 1/x, wobei x die Anzahl "erlaubter" Tastendrücke pro Sekunde ist.

inherited 13. Jun 2006 11:49

Re: "Hintergrund"-Prozedur
 
@Olli: dito^^
@qb-tim: was ist das für ein Programm/was macht die schleife?

3_of_8 13. Jun 2006 12:15

Re: "Hintergrund"-Prozedur
 
Hatter doch im 1. Beitrag gesagt.

Olli 13. Jun 2006 12:39

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:

Angel4585 13. Jun 2006 12:39

Re: "Hintergrund"-Prozedur
 
@3_of_8:
Zitat:

Zitat von qb-tim
Das Programm, welches ich als Beispiel genommen habe existiert eigentlich nicht... Es war nur ein Beispiel... :o


qb-tim 13. Jun 2006 13:51

Re: "Hintergrund"-Prozedur
 
Zitat:

Zitat von Angel4585
@3_of_8:
Zitat:

Zitat von qb-tim
Das Programm, welches ich als Beispiel genommen habe existiert eigentlich nicht... Es war nur ein Beispiel... :o


Das wollte ich auch gerade sagen...

Mein Programm würde fast jede denkbare Funktion überwachen. Aber hauptsächlich die Variablen, ob sie über oder unter einer bestimmten Grenze liegen...

markusj 13. Jun 2006 15:37

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

TheAn00bis 13. Jun 2006 15:59

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:

inherited 13. Jun 2006 16:31

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

qb-tim 14. Jun 2006 14:37

Re: "Hintergrund"-Prozedur
 
Zitat:

Zitat von markusj
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!

Appropos Klasse und Property...

Nehmen wir mal das Beispiel mit den sterbenden Figuren...

Gut wäre dann:

Delphi-Quellcode:
Figur[x].Gesundheit // Integer
Figur[x].Lebend // Boolean (False = Tod)

// usw.
Wie deklariere ich die?

Zacherl 14. Jun 2006 14:44

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 14:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz