Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Gotowy exe co dziala ale nie dziala ! Help xD


Rekomendowane odpowiedzi

Opublikowano

Witam, mam problem ze skryptem, po jego skompilowaniu bot normalnie działa tak jak powinien. 1 dnia bociłem owym botem (sam go napisałem) przez 6/10 h 2 dnia tak samo a dzisiaj po 2/4h wyskoczył taki error:

errorxd.png

Opublikowano

4/5 czyli, że jak coś dopisałeś to przestało działać czy jakaś funkcja nie działa ?

Opublikowano

przeciez pisze ze pare godzin dziala ok wiec to nie wina kodu....

 

musisz przeinstalowac sterowniki do stosu widocznie cos sie popsulo.

Pisze boty do gier WWW na zlecenie.

Opublikowano

@up. wiesz co to jest stackoverflow i przez co jest powodowany? -.-

 

wiesz co to ironia i czym jest powodowana?

Po ludziach tutaj się już spodziewam wszystkiego...

Opublikowano

nadal nie zrozumiałeś co to znaczy KOD PROGRAMU powodującego błędy ?

 

BŁĄD JEST W KODZIE A NIE W PRZYKŁADACH ! w sumie jak dla mnie te przykłady tez sa bez sensu same z siebie

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

nadal nie zrozumiałeś co to znaczy KOD PROGRAMU powodującego błędy ?

 

BŁĄD JEST W KODZIE A NIE W PRZYKŁADACH ! w sumie jak dla mnie te przykłady tez sa bez sensu same z siebie

 

jest blad pokazany w przykladach. JEST.

 

Nie mozesz w ten sposob nieskonczenie wywolywac funkcji, poniewaz na stosie musza byc zapisane zmienne, adres powrotu etc, program spodziewa sie ze funkcja kiedys sie wykona i wroci, co zwolni pamiec na stosie, w twoim wypadku funkcje nigdy nie wracaja, z kazdym wywolaniem jest alokowana pamiec na stosie ktora nigdy nie jest zwalniana co powoduje tzw stack oferflow przepelnienie stosu.

 

ps.pisane zkomorki, lecz chyba wiadomo o co chodzi.

Pisze boty do gier WWW na zlecenie.

Opublikowano

zastanów się o czym piszesz

 

definicje znasz ale powiedzmy odsyłasz wszystkich do kina na sam koniec nieznanego filmu i jeszcze chcesz byśmy opowiadali co było na jego początku !

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano
func start()
...
start()
....  <--- adres powrotu
endfunc  

 

To wychodzi upraszczając kod. Wywołujac funkcje start, na stosie jest zapisywany adres powrotu z tej funkcji. Tzn gdzie ma sie kod znaleźć po wykonaniu tej funkcji. Jeżeli funkcja sie wykona i dojdzie do endfunc, adres powrotu zostanie zdjety ze stosu i kod skoczy tam (jedna linjke za tym gdzie funkcja bylo wywolana). W tym wypadku funkcja nigdy nie dojdzie do endfunc tylko bedzie wywolywala sama siebie rekurencyjnie,co bedzie powodowalo dodawanie na stos kolejnych adresow powrotu, az w koncu zabraknie miejsca na stosie.

 

Na stosie dla konkretnych funkcji zapisywane sa takie rzeczy jak jej argumenty i zmienne co dodatkowo przyspiesza OVERFLOW.

Dlatego nie można robic w ten sposób. Musisz przerobic kod w taki sposób by funkcje nie wywoływały samych siebie rekurencyjnie (bezwarunkowo).

Pisze boty do gier WWW na zlecenie.

Opublikowano

jezu człowieku zrozum, rozmawiasz z dzieckiem które POPRAWIŁO tylko skrypt i nie ma nawet większego pojęcia o pisaniu a co dopiero o zasadach napisania prawidłowego skryptu a co dopiero programowaniu w języku w jakim jest AutoIt napisany !

 

jemu nie przetłumaczysz na zasadzie : popraw tam gdzieś, bo ci robi tam coś w jakimś miejscu a co w końcu powoduje stack oferflow

 

pomyliłeś chyba działy

to nie jest rozmowa na temat KODU ŹRÓDŁOWEGO AUTOIT ( bo tylko do niego może się tego typu poprawka odnosić ) tylko na temat KODU SKRYPTU .

 

jakby nie było twoja wypowiedź odnosi sie do programowania w konkretnym języku a nie do skryptów w AutoIt , poprawność wykonania skryptu jest wstępnie sprawdzana z zasadami jaki się rządzi ten język skryptowy. błędy i braki powodują głownie takie problemy przy wykonywaniu skryptu juz skompilowanego

 

p.s. często używałem 2-3 wersji autoit + wersję beta , w jednych był błąd po skompilowaniu w innych nie, w jeszcze innych nawet nie działał skrypt

 

 

@DOWN

 

jak widzisz autor okazał się 100% dzieciakiem

pousuwał swoje posty i ma gdzieś co sobie piszemy

chcąc mu pomóc

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

jezu człowieku zrozum, rozmawiasz z dzieckiem które POPRAWIŁO tylko skrypt i nie ma nawet większego pojęcia o pisaniu a co dopiero o zasadach napisania prawidłowego skryptu a co dopiero programowaniu w języku w jakim jest AutoIt napisany !

 

jemu nie przetłumaczysz na zasadzie : popraw tam gdzieś, bo ci robi tam coś w jakimś miejscu a co w końcu powoduje stack oferflow

 

Nie powiedziałem ani słowa o języku w jakim autoit jest napisany, ani programowania w nim. Po prostu wytłumaczyłem mu na czym polega stack overflow i co w przypadku jego skryptu go powoduje. Jeżeli to za mało to bardzo mi przykro, ale wydaje mi się, że idąc Twoim tokiem rozumowania każda inna pomoc niż podanie gotowego rozwiązania bez tłumaczenia (bo to przecież nie ma ono sensu, on na pewno nie zrouzmialby go i tak) mija sie z celem. Ja jednak mam nadzieje że w tym wypadku tak nie jest, i kolega zrozumie na czym polega bląd i jak go nie popełniać. Jeżeli nie TRUDNO. Lecz lepsza taka pomoc niż podanie gotowego rozwiązania.

 

I oczywiście nie uważam, że bład jest w kodzie źródłowym autoit, ten jezyk jest po prostu oparty na mechanizmie stosu, który ma to do siebie że lubi sie przepełniać jeżeli nie jesteśmy rozważni. Więc podałem mu jak nie pisać skryptów (nie wywoływać nieskończenie rekurencyjnie funkcji), by tych przepełnień uniknąć. Potrafie sobie wyobrazić że dla kogoś kto nie ma dużo doświadczenia w programowaniu, coś takiego jak stos może być zupełnie nowym pojęciem, dlatego naturalnie taki ktoś jest podatny na popełnianie tych błędów.

 

Moim celem było uświadomić potencjalnego początkującego o istnieniu czegoś takiego jak stos (jest zupełnie niejawny w au3), i o restrykcjach w pisaniu kodu, które ze sobą niesie.

Pisze boty do gier WWW na zlecenie.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...