AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Auf Procedureende warten ?!

Ein Thema von moelski · begonnen am 10. Feb 2006 · letzter Beitrag vom 10. Feb 2006
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Auf Procedureende warten ?!

  Alt 10. Feb 2006, 12:43
Moin !

Ich habe da zwei Proceduren.
Procedure A macht eine Initialisierung der Anwendung. Das muss erst abgeschlossen sein.

Nun kann es aber vorkommen, das Procedure B aufgerufen wird, ohne das die Initialisierung fertig ist, bzw. Procedure A durchgelaufen ist.

Wie kann ich Procedure B dazu bringen, das sie so lange wartet, bis Procedure A durchgelaufen ist?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Sascha_OW

Registriert seit: 4. Aug 2005
Ort: Owschlag
129 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Auf Procedureende warten ?!

  Alt 10. Feb 2006, 12:48
wenn du die irgendwo aufrufst ist es doch eh so das Delphi die von oben nach unten abarbeitet also sollte es doch kein problem sein?
Sascha Schwarz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Auf Procedureende warten ?!

  Alt 10. Feb 2006, 12:49
Wenn du sie im gleichen Codeblock aufrufst:

begin
...
a();
b();
...
end;

sollte es eigentlich funktionieren.

Die Aufrufe der beiden Prozeduren nuß allerdings innerhalb eines Threads erfolgen.
Markus Kinzler
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Auf Procedureende warten ?!

  Alt 10. Feb 2006, 12:52
Moin !

Nene so is das nicht. Dann wäre alles einfach.

Also A macht eine Initialisierung.
B macht jetzt z.B. das Laden einer Datei wenn man im Explorer den Doppelklick macht.

So, die Anwendung geht auf und A rennt los. Und irgendwann haut halt B dazwischen.
Und dort würde ich dann gerne warten bis A fertig ist, weil es sonst zu komischen Problemen kommt
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Auf Procedureende warten ?!

  Alt 10. Feb 2006, 12:54
du könntest am ende der Procedure A ein Flag setzen, welches du in Procedure B abfragst:

Delphi-Quellcode:
while not Flag do
 Application.Proccessmessages;
so oder so ähnlich sollte das funktionieren
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Sascha_OW

Registriert seit: 4. Aug 2005
Ort: Owschlag
129 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Auf Procedureende warten ?!

  Alt 10. Feb 2006, 12:58
ahcso dann habe ich das falsch vestanden sry
Sascha Schwarz
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Auf Procedureende warten ?!

  Alt 10. Feb 2006, 13:05
Moin !

Delphi-Quellcode:
while not Flag do
Application.Proccessmessages;
Genau das habe ich auch versucht. Aber komischerweise hängt die Anwendung dann.
Die Initialisierung rennt garnimmer weiter und auch das Laden der Datei wird nie gestartet.

Bei mir sah es so aus:
Delphi-Quellcode:
  while InitialisierungAbgeschlossen = false do
    Application.ProcessMessages;
Wobei InitialisierungAbgeschlossen auf True geht wenn eben diese abgeschlossen ist ...
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#8

Re: Auf Procedureende warten ?!

  Alt 10. Feb 2006, 13:12
Zitat von moelski:
Genau das habe ich auch versucht. Aber komischerweise hängt die Anwendung dann.
Die Initialisierung rennt garnimmer weiter und auch das Laden der Datei wird nie gestartet.
Ok, mir kommt das jetzt auch komisch vor. Die While-Schleife blockiert den Thread, in dem die Prozedur grad läuft (afaik...). D.h., wenn die andere Prozedur auch blockiert wird, muss sie im selben Thread laufen.
Wie ist das aber möglich, außer dass Prozedur b in Prozedur a aufgerufen wird?
Vielleicht könntest du folgendes versuchen:
Ein Flag, das besagt, ob Prozedur B ausgeführt werden soll. Dieses wird am Beginn auf False gesetzt.
Dazu kommt noch ein Flag das besagt, ob fertig initialisiert wurde.
So, in Prozedur B fragst du:
Ist Fertig Initialisiert? Ja, dann passts, sonst setz das Flag dass sie am Ende des Initialisierens ausgeführt werden soll, und raus aus der Prozedur.
In Prozedur A fragst du ganz am Ende: Soll Prozedur B ausgeführt werden? Wenn ja, dann führ sie aus und sonst is gut.
Afaik dürfte das dann so klappen, ist aber auch nicht gerade die eleganteste Lösung.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Auf Procedureende warten ?!

  Alt 10. Feb 2006, 13:32
THREAD?????

ist procedur B in einem Thread??

also fallse ja dann mach doch anstatt dam Application.Terminate mal ein sleep(10)rein
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:25 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