Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ohne Rekursion eine Methode aufrufen (https://www.delphipraxis.net/11990-ohne-rekursion-eine-methode-aufrufen.html)

Tyrael Y. 18. Nov 2003 13:21


Ohne Rekursion eine Methode aufrufen
 
Hi zusammen,
ich bräuchte mal nen Denkanstoss von euch.

Situation vereinfacht dargestellt:

- ich habe eine public Methode die in etwa so aussieht
Delphi-Quellcode:
procedure Klasse.Execute(Param1, Param2);
begin
  try
    MachWas;
  except
    //hier ist der Knackpunkt
  end;
end;
- die Methode schreibt bestimmte Daten in eine DB
- falls die Methode irgend eine Exception auslösen sollte (in dem Fall wird
auch nix in die DB geschrieben), soll Klasse.Execute neu ausgeführt werden

.. das Dumme hierbei ist, wenn ich die Methode rekursiv Aufrufe und die Methode
nicht zu einem erfolgreichen DB-Eintrag kommt, wird der Stack irgenwann auf alle Fälle
voll sein...

Wie mache ich das am geschicktesten?
Über Timer hab ich mir überlegt is das auch nicht grad die wahre Pracht


Gruß
Tyrael

Minz 18. Nov 2003 13:25

Re: Ohne Rekursion eine Methode aufrufen
 
mit

Delphi-Quellcode:
repeat
  Fehler:=false;
  try
    MachWas;
  except
    Fehler:=true;
  end;
until not Fehler;
Wenn die Anwendung nicht abhängig von MachWas ist, solltest du das
ganze in einen Thread auslagern, damit du weiterarbeiten kannst.

Grüße Minz

Tyrael Y. 18. Nov 2003 13:47

Re: Ohne Rekursion eine Methode aufrufen
 
:wall: , ich :stupid:

Danke dir minze, genau so ist es richtig.

Gruß
Tyrael

Minz 18. Nov 2003 14:00

Re: Ohne Rekursion eine Methode aufrufen
 
np :mrgreen:

PeterRettig 18. Nov 2003 16:03

Re: Ohne Rekursion eine Methode aufrufen
 
Hallo,

prinzipiell würde ich hier aber noch eine
Zählvariable einführen die dafür sorgt, dass
der Versuch nach X Fehlern endgültig ebgebrochen wird...

Ciao Peter

Tyrael Y. 18. Nov 2003 16:04

Re: Ohne Rekursion eine Methode aufrufen
 
nein, das darf nicht peter, er muss es immer wieder probieren

ich mach auch nen sleep rein

edit: es läuft in seinem eigenen Thread


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