Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Application bleibt stehen (https://www.delphipraxis.net/25552-application-bleibt-stehen.html)

alfred 8. Jul 2004 12:48


Application bleibt stehen
 
Hi Leute,

ich habe hier eine Sache, die schwer verständlich ist. Meine Anwendung greift von einem Client über Titan in einer Schleife auf eine BTrieve - DB auf einem Server zu. Titan ist hier nicht entscheidend. Das Problem tritt bei ADO genauso auf. Der vereinfachte Code sieht wie folgt aus :

AOrdeN.Close;
AOrdeN.SQL.Clear;
AOrdeN.SQL.Add('SELECT WBHO.ORDERNR, WBHO.VOLGORD, WBHO.DRRICHT, ORDE.ARTIKEL, ORDE.EINDART FROM WBHO, ORDE WHERE (WBHO.BONNUMM = :BON) AND (ORDE.ORDERNR = WBHO.ORDERNR) AND (ORDE.VOLGORD = WBHO.VOLGORD)');

while ScanDaten[ScanDatenZ,1] <> '' do
begin
AOrdeN.Close;
AOrdeN.ParamByName('BON').AsString:=BonNummer;
AOrdeN.prepared:=True;
AOrdeN.Open;
....... Code ............
AOrdeN.close;
inc(ScanDatenZ);
end;

Die Schleife wird nicht richtig durchlaufen. Das Programm bleibt irgendwann stehen und rührt sich nicht mehr. Nach Abbruch und Neustart läuft es wieder an und bleibt an einer anderen Stelle stehen. Vielleicht habe ich hier ein Ressourcen - Problem ? Hat jemand eine Ahnung nach was ich sehen könnte um dem Problem auf die Spur zu kommen ?
Technische Daten : Datei auf die das Statement läuft ca. 250.000 Sätze
Schleifenarray ca. 10.000 Elemente

Gruss alfred

Luckie 8. Jul 2004 12:58

Re: Application bleibt stehen
 
Was erwartest du? Während dein Programm in der Schleife ist, wird es wohl nichts anderes mehr machen können. Entweder du lagerst das ganze in einen Thread aus oder du rufst in der Schleife Application.Processmessages auf, damit dein Fenster noch die anstehenden Nachrichten aus der Nachrichtenschlage abarbeitet.

sakura 8. Jul 2004 13:07

Re: Application bleibt stehen
 
@alfred: Setze bitte mal die Delphi-Tags um Deinen Code :!:
Wie das geht steht hier: http://www.delphipraxis.net/dpX_faq_...hp?faq=Q_9#Q_9

...:cat:...

alfred 8. Jul 2004 13:08

Re: Application bleibt stehen
 
Hi Luckie,

eventuell habe ich das Problem nicht korrekt erläutert. Das Programm soll in der Schleife bleiben und diese abarbeiten. Es handelt sich hier um ein Übernahmeprogramm, das angestartet und irgendwann beendet wird. So lange es läuft, kommen von außen keine Benutzeraktionen. Zur Kontrolle, ob es ordnungsgemäß läuft, lasse ich mir in der Caption des Formulars den aktuellen Schlüsselwert ausgeben. Irgendwann bleibt der stehen und rührt sich nicht mehr. Daher die Aussage, dass die Application steht.

Luckie 8. Jul 2004 13:09

Re: Application bleibt stehen
 
Und genau deswegen sollst du in der Schleife Application.Processmessages aufrufen oder das ganze in einen Thread auslagern.

glkgereon 8. Jul 2004 19:00

Re: Application bleibt stehen
 
Zitat:

Zur Kontrolle, ob es ordnungsgemäß läuft, lasse ich mir in der Caption des Formulars den aktuellen Schlüsselwert ausgeben. Irgendwann bleibt der stehen und rührt sich nicht mehr. Daher die Aussage, dass die Application steht.
dass heisst aber dann ja das der wert sich erst ma verändert, so würd ich ich das verstehen

Irgendwann bleibt er stehen.....

also verändert er sich vorerst

es könnte sein dasser in try an die grenzen eines ints kommt, oder?

alfred 9. Jul 2004 06:37

Re: Application bleibt stehen
 
Hallo glkbkk,

das ist korrekt. Das Programm läuft an und der Schlüsselwert ändert sich mit. Irgendwann, wie gesagt alternierend, bleibt der Wert stehen und es tut sich nichts mehr. Ich habe gestern mal den Tipp von Luckie mit Application.Postmasseges versucht. Da erfolgt keinerlei Reaktion. Das mit dem separaten Thread werde ich auch noch mal versuchen, aber ich glaube, der Effekt wird der selbe sein. Wir haben gestern übrigens den Server neu gebootet, danach ist die Schleife durchlaufen worden. Das deutet alles auf meine erste Vermutung mit dem Ressourdenproblem hin. Ich habe nur keine Ahnung wie ich dem Problem auf die Schliche komme. Was soll am Server passieren wenn ich ein SELECT mit einer Antwortdatenmenge von einem Satz abschicke, auch wenn das vielleicht 10.000 mal passiert ?

Gruss alfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 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