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

Liczenie wykonanych Pętli


Rekomendowane odpowiedzi

Opublikowano

Witam czy jest możliwość zapisania w zmiennej ilości wykonanych pętli? (w moim przypadku jednej) i np wyświetlenia w msgbox?

 

Opublikowano

Poza pętlą tworzysz zmienną i przypisujesz jej wartość zero. Za każdym obrotem zwiększasz wartość zmiennej o 1. Dalej gdzieś w kodzie robisz z tą zmienną co chcesz.

Opublikowano

Tego skryptu raczej nie da rady.
Musiałbyś zrobić to poza pętlą while :)
Powiedz czego dokładnie potrzebujesz to może pomogę.
A i używaj opcji edytuj na przyszłość 

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
 

Opublikowano

Hotkey i zwykły skrypt na pauzę

HotKeySet("{KLAWISZ}", "TogglePause")

Func TogglePause()
    $Pause = Not $Pause
    While $Pause
        Sleep(111)
   WEnd
EndFunc 

Można tez za pomocą dwóch hotkeyów zatrzymywać całą pętlę zmieniając 1 na 0 i vice versa  

 

Łatwiej nie jest liczyć i sprawdzać kiedy zostanie określona liczba powturzeń wykonana tylko okreslic ile razy ma być skrypt wykonany, wystarczy użyć pętli  Do i Until 

Znowu jeśli zalezy na wykonaniu czegos w okreslonym czasie to TimerDiff i TimerInit

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano
 Można tez za pomocą dwóch hotkeyów zatrzymywać całą pętlę zmieniając 1 na 0 i vice versa  

coś takiego :  ?

hotkeyset("{F6}","msg")
$1 = 1
while $1
	sleep(1000)
	msgbox("","","")
WEnd

Func msg()
	$1 = 0
	EndFunc                           
Opublikowano

To zakańcza Twój skrypt tylko :) 

Osobiście polecam Ci uczyć się w tym języku dodawać jak najmniej do pętli while 
A więcej bawić się func 

Spróbuj ogarnąć sobie AdlibRegister() AdlibUnRegister()
I sprecyzuj co chcesz zrobić to Cię ktoś nakieruje bardziej :) 

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
 

Opublikowano

No i na dłuższą metę pauzowanie pętli nie jest dobrym pomysłem. 

Nie polecam :)

To co że nie polecasz kiedy to jest najprostszy sposób pauzowania jednym przyciskiem dla prostych skryptów. Są o wiele lepsze sposoby pauzowania, bo sam stosuje czasami w swoich skryptach ale dopasowuje się go  działaniem do wykonywanego skryptu. np mam skrypt złożony z 10  dziesięciu funkcji i bez problemu mogę kazda funkcję załączyć klikając np myszką czy dowolnym klawiszem określoną ilość razy  albo sekwencje typu dwa krótkie i długi itp 

 

Adliby akurat nie są zalecane do używania zwłaszcza tam gdzie funkcja ma zwracać jakiś  wynik np w postaci zmiennej 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Może i najprostszy ale równa się to z tym że można używać tego tylko przy banalnych projektach.
AutoIt nie jest wielowątkowy więc zawieszenie pętli while jest troszkę idiotycznym pomysłem jak dla mnie:)

 

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
 

Opublikowano

Jak idiotycznym?  W czym przeszkadza że skrypt jest zatrzymywany przez inna pętlę albo zatrzymuje się działanie samej pętli skryptu ?  

 

Jak Ty sobie wyobrażasz zastopowanie w ogóle wykonywania skryptu inaczej ? 

 

p.s. Tak przy okazji za pomocą identycznej pętli pauzy  zatrzymywany jest KAŻDY skrypt działający w autoit programowo, chodzi mi o ikonę w tray jak ją naciśniesz skrypt pauzuje, ale działa dalej. Czyli według cienibie autorzy języka skryptowego postąpili idiotycznie używając pauzy, ciekawe. 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Po pierwsze widzę że bez przykładu się nie dogadamy. Więc jak możesz daj mi jakiś skrypt "byle nie banalny" z tymi Twoimi kochanymi pauzami.
A po drugie to schodzimy z tematu i chyba grozi nam za to ostrzeżenie jeżeli dobrze pamiętam :)

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
 

Opublikowano

Może i najprostszy ale równa się to z tym że można używać tego tylko przy banalnych projektach.

AutoIt nie jest wielowątkowy więc zawieszenie pętli while jest troszkę idiotycznym pomysłem jak dla mnie:)

 

13 tysięcy linii bez UDFów nie jest chyba banalne.

Mały przykład jak pisać dobry kod:

#include <Misc.au3>

_Example()
Func _Example()
	Local $iCounter = 1

	Local $hDLL = DllOpen("user32.dll")
	While Sleep(10)
		If _IsPressed('13', $hDLL) Then ExitLoop ; ExitLoop on Pause Key
		ConsoleWrite("! $iCounter = " & $iCounter & @CRLF)
		$iCounter += 1
	WEnd
	DllClose($hDLL)

EndFunc   ;==>_Example
Opublikowano

Nie wiem czy się w AutoIt dużo zmieniło przez ostatnie 2 lata ale czy ta funkcja nie zablokuje mi przypadkiem całego programu do momentu jej zakończenia przez dany przycisk?
 

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
 

Opublikowano

Dla mnie to dalej przykład jak za pauzować cały program i nic więcej. 
Dlatego pauza w AutoIt nie ma sensu jak dla mnie. 
Dziękuje koniec tematu z mojej strony.

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
 

Opublikowano

Jemu chyba nie wytłumaczy ze program napisany w autoit zwłaszcza pętla jeśli zostanie zastopowana całkiem nie ma jak ruszyć potem bez pomocy. Coś musi przejąc funkcje by działał program dalej, funkcja pauzy jest własnie pętlą nie dopuszczająca do zatrzymania działania programu.  W najprostszym wykonaniu i zastosowaniu powoduje tylko restart programu od nowa, w bardziej złożonych zastosowaniach przerywa tylko wykonywanie programu i go wznawia dokładnie w tym miejscu gdzie zakończono.

 

Chyba w życiu nie używałeś deburgera w autoit, poszukaj na forum głównym i sprawdź jak działają programy napisane w autoit , będziesz mógł 1000 krotne nawet spowolnić sobie działanie programu i zobaczyć jak po kolei wykonywane są linie skryptu. 

 

 

 

 

Podaj nam przykład jak należy zrobić pauzę według Ciebie, bo cały czas nie widzimy tego

Nadal mówisz że pętla to idiotyzm, ale i nadal  nie wiesz jak pauzować program. 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Autoit jast językiem skryptowym  wykonuje tylko działania po kolei . Nie istnieje w nim polecenie GO TO jak w wielu innych językach programowania  pozwalające zacząć program od nowa, nowy cykl.

Dlatego potrzeba stosowania pętli, musi być przynajmniej jedna działająca by się program nie zakończył. 

Mózg to nie mydło; nie ubędzie Ci go, gdy go użyjesz.

Opublikowano

Do: Amfetaminek

 

Mam zautomatyzowany proces analizy danych w IE.

jest tabela zawierająca takie elementy.

 

1 2 3 4 5 6 7 8 9 10 ... >> 

 

kończy się na numerze X .

Jak sprawdzić jaki to numer ?

Najłatwiejszy sposób to przy użyciu While...Wend lub Do.... Until

Dlaczego bo obie pętle mogą się nigdy nie kończyć póki ich nie zakończy włąściwe Expresion lub ExitLoop

<td colspan="8"><table border="0">
					<tbody><tr>
						<td><span>1</span></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$2')">2</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$3')">3</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$4')">4</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$5')">5</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$6')">6</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$7')">7</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$8')">8</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$9')">9</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$10')">10</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$11')">...</a></td><td><a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GridView','Page$Last')">>></a></td>
					</tr>
				</tbody></table></td>
Opublikowano

Ja bardzo dobrze wiem o co wam chodzi :) 
I kiedy ktoś piszę że dla niego to koniec tematu to najczęściej jest to koniec a nie pauza :)
Tak że dziękuje wam za próbę podzielenia się z mną waszą wiedzą ale nie przekonaliście mnie i nie próbujcie bo jak już powinniście zauważyć nie ma sensu.
Dziękuje za uwagę.
Z poważaniem Amfetaminek :v

v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v^v
 

Opublikowano

Autoit jast językiem skryptowym  wykonuje tylko działania po kolei . Nie istnieje w nim polecenie GO TO jak w wielu innych językach programowania  pozwalające zacząć program od nowa, nowy cykl.

 

Miejsce GOTO poniekąd zapełniają funkcje, z tym że nie można ich stosować "w nieskończoność" , bo jest coś takiego jak rekurencja, i jej ograniczenie.

Tzn. Można je stosować nieskończenie wiele razy ale takie użycie musi wiązać się wychodzeniem z funkcji.

 

Dlatego .....

 

Dlatego potrzeba stosowania pętli, musi być przynajmniej jedna działająca by się program nie zakończył. 

 

Racja.

Opublikowano

Nie będe zakładał nowego tematu zapytam tutaj...­

chodzi o skincrafter mam wszystko co potrzebne i co pisało tutaj :

http://www.mpcforum.pl/topic/1060477-tut-skincrafter-czyli-skin-w-2-linijkach/

No ale niechce mi działać tzn wyskakuje mi gui ale bez skina 

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <SkinCrafter.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Test GUI", 615, 437, 192, 124)
 _SetSkin($form1, @ScriptDir & "A_67.skf", @ScriptDir & "SkinCrafterDll.dll")
$Label1 = GUICtrlCreateLabel("Label1", 40, 80, 36, 17)
$Button1 = GUICtrlCreateButton("Button1", 40, 56, 75, 25)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 40, 152, 97, 17)
$Radio1 = GUICtrlCreateRadio("Radio1", 40, 104, 113, 17)
$Radio2 = GUICtrlCreateRadio("Radio2", 40, 128, 113, 17)
$List1 = GUICtrlCreateList("Test", 40, 184, 121, 97)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd

Poradzi mi coś ktoś?

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...