Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi AV bei doppeltem Aufruf einer Prozedure (https://www.delphipraxis.net/44549-av-bei-doppeltem-aufruf-einer-prozedure.html)

Helmi 20. Apr 2005 17:46


AV bei doppeltem Aufruf einer Prozedure
 
Hallo,

ich hätt da mal eine Frage:

Kann es sein, dass es bei folgendem (doppeltem) Prozedur-Aufruf zu einer Access Violation kommen kann?

Delphi-Quellcode:
procedure TForm1.PROZESS_1;
begin
{...}

  mach_was;

  PROZESS_2;
{...}
end;

procedure TForm1.PROZESS_2;
begin
{...}

  mach_was;

  PROZESS_1;
{...}
end;

alcaeus 20. Apr 2005 17:47

Re: AV bei doppeltem Aufruf einer Prozedure
 
Theoretisch keine AV, aber ein Stack-Ueberlauf. Das ist eine Art von Rekursion ;)

Greetz
alcaeus

Waldteufel 20. Apr 2005 17:49

Re: AV bei doppeltem Aufruf einer Prozedure
 
Hi.

Das kann sein, da du hier eine nichtabbrechende indirekte Rekursion hast. Prozess_1 ruft Prozess_2 auf, der wiederum Prozess_1 aufruft... usw.

Du musst also irgendwie ein Abbruchkriterium finden

Ungefähr so :

Delphi-Quellcode:
procedure p1(i : integer);
begin
  p2(i + 1)
end;

procedure p2(i : integer);
begin
  if i < 1000 then p1(i+1);
end;

Helmi 20. Apr 2005 17:58

Re: AV bei doppeltem Aufruf einer Prozedure
 
Hallo,

ich hatte das Phänomen dass immer mal wieder eine Access Violation auftauchte, aber nur in einer bestimmten Situation.

Deshalb hab ich die Prozeduren, die daran beteiligt sind, kontrolliert und bin darauf gekommen, dass ich das obrige Beispiel hatte.

Ich hab das jetzt mal so umgeschrieben, dass das nicht mehr passieren kann.

Ich hoffe, dass das jetzt die Rätsels Lösung war. Nur war ich mir nicht sicher, ob das eine AV auslösen könnte.


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