Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 03:52

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Hilfe, Stack Overflow!

Discussion on Hilfe, Stack Overflow! within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Question Hilfe, Stack Overflow!

Hallo ich programmiere grade mein ersten bot mit "ImageSearch" und habe das Problem das nach einer weile die Fehlermeldung stack overflow kommt und ich weis nicht wie ich das verhindern soll.

Ich arbeite mit autoit seit 2 Wochen und das ist mein Ergebnis.

Ich hoffe das ihr mir helfen könnt.

Danke.

Der autoit code

kann geclosed werden
loop88 is offline  
Old 01/29/2014, 18:55   #2
 
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
Die Funktionen bichos und bicho rufen sich gegenseitig auf. Irgendwann ist dann der Stack voll, weil Zustände, etc. dort abgelegt werden. Alle Rekursionen lassen sich iterativ realisieren. Versuch das mal.
qkuh is offline  
Thanks
1 User
Old 01/29/2014, 18:57   #3
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by loop88 View Post
Hallo ich programmiere grade mein ersten bot mit "ImageSearch" und habe das Problem das nach einer weile die Fehlermeldung stack overflow kommt und ich weis nicht wie ich das verhindern soll.

Ich arbeite mit autoit seit 2 Wochen und das ist mein Ergebnis.

Ich hoffe das ihr mir helfen könnt.

Danke.
befolge bitte folgende punkte:
  • gewöhne dir an mit EINER endlosschleife zu arbeiten.
  • versuche immer rekursion zu vermeiden
  • allgemeiner script aufbau:
    • <includes>
    • <hotkeys>
    • <variablen>
    • <guis>
    • <hauptschleife>
    • <funktionsdeklarationen>
lolkop is offline  
Thanks
2 Users
Old 01/29/2014, 19:12   #4
 
YatoDev's Avatar
 
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
Bist dir sicher das der code oben von dir ist ? hab nie nen deutschen gesehen der seine variablen nicht deutsch oder english schreibt und in die ini auch
YatoDev is offline  
Old 01/29/2014, 19:22   #5
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Quote:
Originally Posted by »FlutterShy™ View Post
Bist dir sicher das der code oben von dir ist ? hab nie nen deutschen gesehen der seine variablen nicht deutsch oder english schreibt und in die ini auch

Ja der code ist von mir un diese Sprache ist Spanisch den denn ich habe lange zeit in Spanien gelebt.
bei der ini gebe ich zu, da habe ich mir den code zusame geklaut!

Quote:
Originally Posted by qkuh View Post
Die Funktionen bichos und bicho rufen sich gegenseitig auf. Irgendwann ist dann der Stack voll, weil Zustände, etc. dort abgelegt werden. Alle Rekursionen lassen sich iterativ realisieren. Versuch das mal.

wie kann ich das machen, kannst du das für ein anfänger erklären?

danke.

Quote:
Originally Posted by lolkop View Post
befolge bitte folgende punkte:
  • gewöhne dir an mit EINER endlosschleife zu arbeiten.
  • versuche immer rekursion zu vermeiden
  • allgemeiner script aufbau:
    • <includes>
    • <hotkeys>
    • <variablen>
    • <guis>
    • <hauptschleife>
    • <funktionsdeklarationen>
Wie soll ich eine rekursion vermeiden wenn der wert immer wieder überpruft werden soll? kannst du mir dabei helfen?
loop88 is offline  
Old 01/29/2014, 20:11   #6
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by loop88 View Post
Wie soll ich eine rekursion vermeiden wenn der wert immer wieder überpruft werden soll? kannst du mir dabei helfen?
dein code ist stark vereinfacht dargestellt so aufgebaut:
Code:
a()
Func a()
	[...]
	b()
EndFunc
Func b()
	[...]
	a()
EndFunc
die funktionen rufen sich nach und nach immer weiter gegenseitig auf und werden so im stack aufgestapelt... da nie das ende einer funktion erreicht werden kann, wird der stack auch entsprechend nie wieder abgebaut und wächst bis es schließlich zum überlauf kommt...

um das problem zu beheben, kann man sie einfach direkt nacheinander in einer schleife abarbeiten:
Code:
While True
	a()
	b()
WEnd
Func a()
	[...]
EndFunc
Func b()
	[...]
EndFunc
Jede funktion wird beim aufruf auf den stack geladen und beim erreichen des ausstiegspunktes (Return oder EndFunc) wieder vom stack entfernt. folglich kann es nichtmehr zu einem stack überlauf kommen...

Edit:
das gleiche passiert im übrigen auch hier:
Code:
HotKeySet(<hotkey1>, 'a')
HotKeySet(<hotkey2>, 'b')
While True
WEnd
Func a()
	While True
		[...]
	WEnd
EndFunc
Func b()
	While True
		[...]
	WEnd
EndFunc
da der aufruf einer neuen funktion manuell ausgeführt wird (über hotkeys), dauert es entsprechend länger, bis der stacküberlauf sich ereignet. beim drücken des hotkeys wird eine neue funktion auf den stack gepackt, ohne das die alte funktion gelöscht werden kann (da sie nie einen ausstiegspunkt erreicht). deshalb darf eine pause funktion niemals so aufgebaut sein:
Code:
HotKeySet(<hotkey>, "pause")
While True
	[...]
WEnd
Func pause()
	While True
		[...]
	WEnd
EndFunc
letztendich wird auch hierdurch nach einer laufzeit x immer ein stack overflow auftauchen.

stattdessen arbeitet man mit zuständen:
Code:
HotKeySet(<hotkey>, "pause")
Global $pause
While True
	If Not $pause Then
		[...]
	EndIf
WEnd
Func pause()
	If $pause Then
		$pause = False
	Else
		$pause = True
	EndIf
EndFunc
oder einfacher:
Code:
HotKeySet(<hotkey>, "pause")
Global $pause
While True
	If Not $pause Then
		[...]
	EndIf
WEnd
Func pause()
	$pause = Not $pause
EndFunc
lolkop is offline  
Thanks
1 User
Old 01/29/2014, 20:43   #7
 
loop88's Avatar
 
elite*gold: 0
Join Date: Dec 2013
Posts: 47
Received Thanks: 9
Wink

Quote:
Originally Posted by lolkop View Post
dein code ist stark vereinfacht dargestellt so aufgebaut:
Code:
a()
Func a()
	[...]
	b()
EndFunc
Func b()
	[...]
	a()
EndFunc
die funktionen rufen sich nach und nach immer weiter gegenseitig auf und werden so im stack aufgestapelt... da nie das ende einer funktion erreicht
...

Danke für die super Erklärung ich werde mal das alles berücksichtigen und hoffen das ich alles richtig mache , melde mich dann wenn ich fertig bin und vielen vielen dank.
loop88 is offline  
Reply


Similar Threads Similar Threads
Voten für Deutsches Stack Overflow
02/14/2013 - Web Development - 2 Replies
Die meisten bzw. viele von euch kennen sicher das Stack Overflow. Es gibt (schon sehr lange) eine möglichkeit zum Voten für ein Deutsches (: Wäre natürlich sehr schick wenn diese in die Beta kommt. Dafür braucht man aber viele Unterstützer. Also Votet (Committen auf der linken seite) (x Stack Overflow (in German) - Area 51 - Stack Exchange
Recursion level has been exceeded - AutoIt will quit to prevent stack overflow.
01/20/2013 - AutoIt - 4 Replies
Hallo Leute, ich hab das folgende Problem mit meinem Bot: Nach ca. 4-5 Std. Laufzeit meines Bots bekomme ich folgende Meldung... "Recursion level has been exceeded - AutoIt will quit to prevent stack overflow." Das ganze an völlig unterschiedlichen Stellen, es ist also wirklich die Addition die das Problem hervorruft und nicht eine bestimmte Funktion etc.
Koopa's Discount-Offer:Ectos 13,99€/stack! Lpicks 3,99/stack!
04/04/2012 - Guild Wars Trading - 0 Replies
Hey ;) My special offer until monday or sold-out. Enjoy :) Ectos in stock: 10 Stacks http://gwah.onlinewelten.com/images/Ektoplasmakuge l.png 8 stacks sold 1 Stack = 13,99€
Koopas Special -> Ektos für 15/€ Stack -- Dietriche 4,99€/Stack
04/03/2012 - Guild Wars Trading - 1 Replies
Servus ;) Ich biete euch hier die einmalige Gelegenheit, Ektos und Dietriche zu einem sehr günstigen Preis zu kaufen. Ektos auf Lager: 15 Stacks http://gwah.onlinewelten.com/images/Ektoplasmakuge l.png 1 Stack = 15,00€
[HILFE]desc buffer mem_size overflow...
06/16/2011 - Metin2 Private Server - 0 Replies
#!#@$



All times are GMT +1. The time now is 03:54.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.