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

Dodawanie pkt buttonami


Rekomendowane odpowiedzi

Opublikowano

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

-REKLAMA-

Siemka, bawiłem się tym kodem co dał mi jeden użytkownik w tym temacie http://www.mpcforum.pl/topic/1609078-dodawanie-pkt-buttonami/#entry13546911

 

Prawie wszystko ogarnąłem tak jak chce ale mam problem, mam kilka inputów do których te pkt będą dodawane i problem jest w tym, że na każdego inputa jest ograniczenie max liczby pkt a mi chodzi o to by było max pkt = 13 i te 13 pkt można rozdać do każdego a nie jak teraz, że mogę rozdać w każdym inpucie 13 pkt. Dodaje próbki kodu jak ja to zrobiłem.

 

Kod jest na szybko przepisany z mojego głównego kodu, którego nie chce udostępniać w tym podanym jest tylko to dodawanie.

(Zapomniałem o buttonach ale mniejsza to chyba nie potrzebne do tego ^^)

 

 

 
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $maxpkt = 0
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 256, 183, 349, 220)
$a = GUICtrlCreateInput(0, 32, 16, 57, 21)
$b = GUICtrlCreateInput(0, 32, 16, 57, 21)
$c = GUICtrlCreateInput(0, 32, 16, 57, 21)
$d = GUICtrlCreateInput(0, 32, 16, 57, 21)
$e = GUICtrlCreateInput(0, 32, 16, 57, 21)
$f = GUICtrlCreateInput(0, 32, 16, 57, 21)
$g = GUICtrlCreateInput(0, 32, 16, 57, 21)
$Button1 = GUICtrlCreateButton("+", 96, 16, 27, 25)
$Button2 = GUICtrlCreateButton("-", 0, 16, 27, 25)
$Input2 = GUICtrlCreateInput($maxpkt, 0, 48, 121, 21, $ES_NUMBER)
$Label1 = GUICtrlCreateLabel("max pkt = " & $maxpkt, 128, 48, 86, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
Case $Input2
   $maxpkt = ile(GUICtrlRead($Input2))
   GUICtrlSetData($Label1, "PKT: " & $maxpkt)
   GUICtrlSetData($a, 20)
   GUICtrlSetData($b, 20)
   GUICtrlSetData($c, 20)
   GUICtrlSetData($d, 10)
   GUICtrlSetData($e, 10)
   GUICtrlSetData($f, 10)
   GUICtrlSetData($g, 10)
  Case $Button1
   butek1()
  Case $Button90
   butek2()
  Case $Button3
   butek11()
  Case $Button2
   butek22()
  Case $Button9
   butek111()
  Case $Button4
   butek222()
  Case $Button10
   butek1111()
  Case $Button5
   butek2222()
  Case $Button11
   butek11111()
  Case $Button6
   butek22222()
  Case $Button12
   butek111111()
  Case $Button7
   butek222222()
  Case $Button13
   butek1111111()
  Case $Button8
   butek2222222()
  Case $GUI_EVENT_CLOSE
   Exit
 EndSwitch
WEnd
Func butek1()
 Local $read = Int(GUICtrlRead($a))
 If $read >= $maxpkt Then Return
 GUICtrlSetData($a, $read + 1)
EndFunc   ;==>butek1
Func butek2()
 Local $read = Int(GUICtrlRead($a))
 If $read <= 0 Then Return
 GUICtrlSetData($a, $read - 1)
EndFunc   ;==>butek2
Func butek11()
 Local $read = Int(GUICtrlRead($)
 If $read >= $maxpkt Then Return
 GUICtrlSetData($b, $read + 1)
EndFunc   ;==>butek1
Func butek22()
 Local $read = Int(GUICtrlRead($)
 If $read <= 0 Then Return
 GUICtrlSetData($b, $read - 1)
EndFunc   ;==>butek2
Func butek111()
 Local $read = Int(GUICtrlRead($c))
 If $read >= $maxpkt Then Return
 GUICtrlSetData($c, $read + 1)
EndFunc   ;==>butek1
Func butek222()
 Local $read = Int(GUICtrlRead($c))
 If $read <= 0 Then Return
 GUICtrlSetData($c, $read - 1)
EndFunc   ;==>butek2
Func butek1111()
 Local $read = Int(GUICtrlRead($d))
 If $read >= $maxpkt Then Return
 GUICtrlSetData($d, $read + 1)
EndFunc   ;==>butek1
Func butek2222()
 Local $read = Int(GUICtrlRead($d))
 If $read <= 0 Then Return
 GUICtrlSetData($d, $read - 1)
EndFunc   ;==>butek2
Func butek11111()
 Local $read = Int(GUICtrlRead($e))
 If $read >= $maxpkt Then Return
 GUICtrlSetData($e, $read + 1)
EndFunc   ;==>butek1
Func butek22222()
 Local $read = Int(GUICtrlRead($e))
 If $read <= 0 Then Return
 GUICtrlSetData($e, $read - 1)
EndFunc   ;==>butek2
Func butek111111()
 Local $read = Int(GUICtrlRead($f))
 If $read >= $maxpkt Then Return
 GUICtrlSetData($f, $read + 1)
EndFunc   ;==>butek1
Func butek222222()
 Local $read = Int(GUICtrlRead($f))
 If $read <= 0 Then Return
 GUICtrlSetData($f, $read - 1)
EndFunc   ;==>butek2
Func butek1111111()
 Local $read = Int(GUICtrlRead($g))
 If $read >= $maxpkt Then Return
 GUICtrlSetData($g, $read + 1)
EndFunc   ;==>butek1
Func butek2222222()
 Local $read = Int(GUICtrlRead($g))
 If $read <= 0 Then Return
 GUICtrlSetData($g, $read - 1)
EndFunc   ;==>butek2
Func ile($read)
 Switch $read
  Case "1"
   Return 5
  Case "2"
   Return 9
  Case "3"
   Return 13
 EndSwitch
EndFunc   ;==>ile
 

 

 

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Robisz zmienną globalną sumującą wszystkie punkty i gdy przekracza ona 13 to nie dodaje punktu


$ile_punktów_w_sumie=0;

 

switch $msg

case $button1:
if $ile_punktów_w_sumie<13 then

$input1pkt+=1
$ile_punktów_w_sumie+=1
endif

case $button2:
if $ile_punktów_w_sumie<13 then

$input2pkt+=1
$ile_punktów_w_sumie+=1
endif
.....


Analogicznie z odejmowaniem.

Opublikowano


#include <ButtonConstants.au3>

#include <EditConstants.au3>

#include <GUIConstantsEx.au3>

#include <StaticConstants.au3>

#include <WindowsConstants.au3>

 

Global $maxpkt = 0, $sumpkt = 0

 

#Region ### START Koda GUI section ### Form=

$Form1 = GUICreate("Form1", 256, 256, 349, 220)

$Input1 = GUICtrlCreateInput(0, 32, 16, 57, 21)

$Button1 = GUICtrlCreateButton("+", 96, 16, 27, 25)

$Button2 = GUICtrlCreateButton("-", 0, 16, 27, 25)

 

$Input2 = GUICtrlCreateInput(0, 32, 46, 57, 21)

$Button3 = GUICtrlCreateButton("+", 96, 46, 27, 25)

$Button4 = GUICtrlCreateButton("-", 0, 46, 27, 25)

 

$Input3 = GUICtrlCreateInput(0, 32, 76, 57, 21)

$Button5 = GUICtrlCreateButton("+", 96, 76, 27, 25)

$Button6 = GUICtrlCreateButton("-", 0, 76, 27, 25)

 

$Input4 = GUICtrlCreateInput($maxpkt, 0, 200, 121, 21, $ES_NUMBER)

$Label1 = GUICtrlCreateLabel("max pkt = " & $maxpkt, 128, 200, 86, 17)

GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###

 

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $Input4

$maxpkt = ile(GUICtrlRead($Input4))

GUICtrlSetData($Label1, "max pkt = " & $maxpkt)

GUICtrlSetData($Input1, 0)

GUICtrlSetData($Input2, 0)

GUICtrlSetData($Input3, 0)

Case $Button1

add($Input1)

Case $Button2

sub($Input1)

Case $Button3

add($Input2)

Case $Button4

sub($Input2)

Case $Button5

add($Input3)

Case $Button6

sub($Input3)

Case $GUI_EVENT_CLOSE

Exit

EndSwitch

WEnd

 

Func add($idInput)

If $sumpkt >= $maxpkt Then Return

Local $read = Int(GUICtrlRead($idInput))

$sumpkt += 1

GUICtrlSetData($idInput, $read + 1)

EndFunc

 

Func sub($idInput)

If $sumpkt <= 0 Then Return

Local $read = Int(GUICtrlRead($idInput))

$sumpkt -= 1

GUICtrlSetData($idInput, $read - 1)

EndFunc

 

Func ile($read)

Switch $read

Case "1"

Return 5

Case "2"

Return 9

Case "3"

Return 13

EndSwitch

EndFunc ;==>ile

 

 

Opublikowano
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $maxpkt = 0, $sumpkt = 0

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 256, 256, 349, 220)
$Input1 = GUICtrlCreateInput(0, 32, 16, 57, 21)
$Button1 = GUICtrlCreateButton("+", 96, 16, 27, 25)
$Button2 = GUICtrlCreateButton("-", 0, 16, 27, 25)

$Input2 = GUICtrlCreateInput(0, 32, 46, 57, 21)
$Button3 = GUICtrlCreateButton("+", 96, 46, 27, 25)
$Button4 = GUICtrlCreateButton("-", 0, 46, 27, 25)

$Input3 = GUICtrlCreateInput(0, 32, 76, 57, 21)
$Button5 = GUICtrlCreateButton("+", 96, 76, 27, 25)
$Button6 = GUICtrlCreateButton("-", 0, 76, 27, 25)

$Input4 = GUICtrlCreateInput($maxpkt, 0, 200, 121, 21, $ES_NUMBER)
$Label1 = GUICtrlCreateLabel("max pkt = " & $maxpkt, 128, 200, 86, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $Input4
			$maxpkt = ile(GUICtrlRead($Input4))
			GUICtrlSetData($Label1, "max pkt = " & $maxpkt)
			GUICtrlSetData($Input1, 0)
			GUICtrlSetData($Input2, 0)
			GUICtrlSetData($Input3, 0)
		Case $Button1
			add($Input1)
		Case $Button2
			sub($Input1)
		Case $Button3
			add($Input2)
		Case $Button4
			sub($Input2)
		Case $Button5
			add($Input3)
		Case $Button6
			sub($Input3)
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func add($idInput)
	If $sumpkt >= $maxpkt Then Return
	Local $read = Int(GUICtrlRead($idInput))
	$sumpkt += 1
	GUICtrlSetData($idInput, $read + 1)
EndFunc

Func sub($idInput)
	If $sumpkt <= 0 Then Return
	Local $read = Int(GUICtrlRead($idInput))
	$sumpkt -= 1
	GUICtrlSetData($idInput, $read - 1)
EndFunc

Func ile($read)
	Switch $read
		Case "1"
			Return 5
		Case "2"
			Return 9
		Case "3"
			Return 13
	EndSwitch
EndFunc   ;==>ile

 

Działa to fajnie tylko jest jeden problem mianowicie gdy doda się wszystkie pkt i potem chce się je odjąć można zejść poniżej zera -3 -4 etc

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Ref

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Zobacz coś takiego, może ci podpasuje.

#include <GUIConstantsEx.au3>

Dim $iLimit=13

GUICreate("Góra / Dół:")

$hInput1 = GUICtrlCreateInput(0, 20, 20, 100, 25, 0x800)
$hUpDown1 = GUICtrlCreateUpdown($hInput1)
GUICtrlSetLimit ($hUpDown1, $iLimit, 0)

$hInput2 = GUICtrlCreateInput(0, 20, 60, 100, 25, 0x800)
$hUpDown2 = GUICtrlCreateUpdown($hInput2)
GUICtrlSetLimit ($hUpDown2, $iLimit, 0)

$hInput3 = GUICtrlCreateInput(0, 20, 100, 100, 25, 0x800)
$hUpDown3 = GUICtrlCreateUpdown($hInput3)
GUICtrlSetLimit ($hUpDown3, $iLimit, 0)

GUISetState()
Do
   $iLimit1 = $iLimit - GUICtrlRead($hInput2) - GUICtrlRead($hInput3)
   $iLimit2 = $iLimit - GUICtrlRead($hInput1) - GUICtrlRead($hInput3)
   $iLimit3 = $iLimit - GUICtrlRead($hInput1) - GUICtrlRead($hInput2)
   GUICtrlSetLimit($hUpDown1, $iLimit1, 0)
   GUICtrlSetLimit($hUpDown2, $iLimit2, 0)
   GUICtrlSetLimit($hUpDown3, $iLimit3, 0)
   Sleep(25)
Until GUIGetMsg()=$GUI_EVENT_CLOSE
MsgBox(0, "Updown", GUICtrlRead($hInput1) & @LF & GUICtrlRead($hInput2) & @LF &GUICtrlRead($hInput3))


 

Opublikowano

 

Zobacz coś takiego, może ci podpasuje.

#include <GUIConstantsEx.au3>

Dim $iLimit=13

GUICreate("Góra / Dół:")

$hInput1 = GUICtrlCreateInput(0, 20, 20, 100, 25, 0x800)
$hUpDown1 = GUICtrlCreateUpdown($hInput1)
GUICtrlSetLimit ($hUpDown1, $iLimit, 0)

$hInput2 = GUICtrlCreateInput(0, 20, 60, 100, 25, 0x800)
$hUpDown2 = GUICtrlCreateUpdown($hInput2)
GUICtrlSetLimit ($hUpDown2, $iLimit, 0)

$hInput3 = GUICtrlCreateInput(0, 20, 100, 100, 25, 0x800)
$hUpDown3 = GUICtrlCreateUpdown($hInput3)
GUICtrlSetLimit ($hUpDown3, $iLimit, 0)

GUISetState()
Do
   $iLimit1 = $iLimit - GUICtrlRead($hInput2) - GUICtrlRead($hInput3)
   $iLimit2 = $iLimit - GUICtrlRead($hInput1) - GUICtrlRead($hInput3)
   $iLimit3 = $iLimit - GUICtrlRead($hInput1) - GUICtrlRead($hInput2)
   GUICtrlSetLimit($hUpDown1, $iLimit1, 0)
   GUICtrlSetLimit($hUpDown2, $iLimit2, 0)
   GUICtrlSetLimit($hUpDown3, $iLimit3, 0)
   Sleep(25)
Until GUIGetMsg()=$GUI_EVENT_CLOSE
MsgBox(0, "Updown", GUICtrlRead($hInput1) & @LF & GUICtrlRead($hInput2) & @LF &GUICtrlRead($hInput3))


 

To nie o to chodzi :D Ty ograniczyłeś pkt do max 13 a tutaj chodzi, że liczba 1 odpowiada 5 pkt do rozdania, liczba 2 odpowiada 9 pkt do rozdania, liczba 3 odpowiada 13 pkt do rozdania tak jak zrobił to @Pawellek tylko, ze u niego występuje ten błąd z możliwością dodania ujemnych pkt'ów.

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Nie do końca doczytałem, ale przeróbka jest banalna. Mam nadzieję, że teraz będzie tak jak chciałeś.

Oto poprawiony kod:

#include <GUIConstantsEx.au3>

Dim $iLimit, $iLimitMem

GUICreate("Góra / Dół:")

$hInput1 = GUICtrlCreateInput(0, 20, 20, 100, 25, 0x800)
$hUpDown1 = GUICtrlCreateUpdown($hInput1)

$hInput2 = GUICtrlCreateInput(0, 20, 60, 100, 25, 0x800)
$hUpDown2 = GUICtrlCreateUpdown($hInput2)

$hInput3 = GUICtrlCreateInput(0, 20, 100, 100, 25, 0x800)
$hUpDown3 = GUICtrlCreateUpdown($hInput3)

$hInput4 = GUICtrlCreateInput(1, 20, 160, 50, 25, 0x800)
$hUpDown4 = GUICtrlCreateUpdown($hInput4)
GUICtrlSetLimit($hUpDown4, 3, 1)

GUISetState()
Do
   $iLimit = 1 + 4*GUICtrlRead($hInput4)
   If $iLimit<$iLimitMem Then ClearInput($hInput1, $hInput2, $hInput3)
   $iLimit1 = $iLimit - GUICtrlRead($hInput2) - GUICtrlRead($hInput3)
   $iLimit2 = $iLimit - GUICtrlRead($hInput1) - GUICtrlRead($hInput3)
   $iLimit3 = $iLimit - GUICtrlRead($hInput1) - GUICtrlRead($hInput2)
   SetLimit($iLimit1, $iLimit2, $iLimit3)
   $iLimitMem = $iLimit
   Sleep(25)
Until GUIGetMsg()=$GUI_EVENT_CLOSE
MsgBox(0, "Updown", GUICtrlRead($hInput1) & @LF & GUICtrlRead($hInput2) & @LF &GUICtrlRead($hInput3))


;-----------------------------------------------------------------------------------------------------
Func SetLimit($iLimit1=0, $iLimit2=0, $iLimit3=0)
   GUICtrlSetLimit($hUpDown1, $iLimit1, 0)
   GUICtrlSetLimit($hUpDown2, $iLimit2, 0)
   GUICtrlSetLimit($hUpDown3, $iLimit3, 0)
EndFunc

Func ClearInput($hInput1, $hInput2, $hInput3)
   GUICtrlSetData($hInput1, 0)
   GUICtrlSetData($hInput2, 0)
   GUICtrlSetData($hInput3, 0)
EndFunc

Dodałem jeszcze zerowanie inputów po zmniejszeniu zakresu.

Opublikowano

Nie do końca doczytałem, ale przeróbka jest banalna. Mam nadzieję, że teraz będzie tak jak chciałeś.

Oto poprawiony kod:

#include <GUIConstantsEx.au3>

Dim $iLimit, $iLimitMem

GUICreate("Góra / Dół:")

$hInput1 = GUICtrlCreateInput(0, 20, 20, 100, 25, 0x800)
$hUpDown1 = GUICtrlCreateUpdown($hInput1)

$hInput2 = GUICtrlCreateInput(0, 20, 60, 100, 25, 0x800)
$hUpDown2 = GUICtrlCreateUpdown($hInput2)

$hInput3 = GUICtrlCreateInput(0, 20, 100, 100, 25, 0x800)
$hUpDown3 = GUICtrlCreateUpdown($hInput3)

$hInput4 = GUICtrlCreateInput(1, 20, 160, 50, 25, 0x800)
$hUpDown4 = GUICtrlCreateUpdown($hInput4)
GUICtrlSetLimit($hUpDown4, 3, 1)

GUISetState()
Do
   $iLimit = 1 + 4*GUICtrlRead($hInput4)
   If $iLimit<$iLimitMem Then ClearInput($hInput1, $hInput2, $hInput3)
   $iLimit1 = $iLimit - GUICtrlRead($hInput2) - GUICtrlRead($hInput3)
   $iLimit2 = $iLimit - GUICtrlRead($hInput1) - GUICtrlRead($hInput3)
   $iLimit3 = $iLimit - GUICtrlRead($hInput1) - GUICtrlRead($hInput2)
   SetLimit($iLimit1, $iLimit2, $iLimit3)
   $iLimitMem = $iLimit
   Sleep(25)
Until GUIGetMsg()=$GUI_EVENT_CLOSE
MsgBox(0, "Updown", GUICtrlRead($hInput1) & @LF & GUICtrlRead($hInput2) & @LF &GUICtrlRead($hInput3))


;-----------------------------------------------------------------------------------------------------
Func SetLimit($iLimit1=0, $iLimit2=0, $iLimit3=0)
   GUICtrlSetLimit($hUpDown1, $iLimit1, 0)
   GUICtrlSetLimit($hUpDown2, $iLimit2, 0)
   GUICtrlSetLimit($hUpDown3, $iLimit3, 0)
EndFunc

Func ClearInput($hInput1, $hInput2, $hInput3)
   GUICtrlSetData($hInput1, 0)
   GUICtrlSetData($hInput2, 0)
   GUICtrlSetData($hInput3, 0)
EndFunc

Dodałem jeszcze zerowanie inputów po zmniejszeniu zakresu.

 

Wywala błąd przy odpalaniu.

"error: missing Until <expr>. (illegal character)" [linijka 22]

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

U mnie działa. Musiałeś coś źle skopiować.

 

Skopiowałem drugi raz i to samo :(

 

>"D:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "D:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Users\rychu\Desktop\Nowy AutoIt v3 Script (2).au3" /UserParams   
+>19:35:30 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0   Keyboard:00000415  OS:WIN_10/  CPU:X64 OS:X64  Environment(Language:0415)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => D:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\rychu\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\rychu\AppData\Local\AutoIt v3\SciTE
>Running AU3Check (3.3.14.2)  from:D:\Program Files (x86)\AutoIt3  input:C:\Users\rychu\Desktop\Nowy AutoIt v3 Script (2).au3
"C:\Users\rychu\Desktop\Nowy AutoIt v3 Script (2).au3"(22,1) : error: missing Until <expr>. (illegal character)
Â
^
"C:\Users\rychu\Desktop\Nowy AutoIt v3 Script (2).au3"(21,1) : REF: missing Until <expr>.
Do
^
C:\Users\rychu\Desktop\Nowy AutoIt v3 Script (2).au3 - 1 error(s), 0 warning(s)
!>19:35:30 AU3Check ended. Press F4 to jump to next error.rc:2
+>19:35:31 AutoIt3Wrapper Finished.
>Exit code: 2    Time: 2.298

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Nie zgubilem, wklejam twoj kod na czysto nie dokladam go nigdzie.

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

W takim razie masz coś z Autoit'em nie tak.

U mnie działa z pod SciTe i skompilowane.

A co ci generuje taką epopeję z tym błędem. Uruchamiasz to z pod SciTe, czy jak?

Opublikowano

Ta, uruchamiam to normalnie w scite

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Kłopoty są  po twojej stronie. Sprawdziłem na innym komputerze. Chodzi bez problemu.

Analizując komunikat błędu wynika, że masz wstawiony jakiś dziwny znak (Â - kod 194)

 

Wstawiając u siebie ten znak na początku 22 wiersza otrzymałem identyczny komunikat błędu:

 

"D:\WASTA\Programy\xxx.au3"(22,1) : error: missing Until <expr>. (illegal character)
Ă
^
"D:\WASTA\Programy\xxx.au3"(21,1) : REF: missing Until <expr>.
Do
^
D:\WASTA\Programy\xxx.au3 - 1 error(s), 0 warning(s)
!>08:39:43 AU3Check ended. Press F4 to jump to next error.rc:2
+>08:39:43 AutoIt3Wrapper Finished.
>Exit code: 2    Time: 0.5129

 

Zobacz czy coś na początku 22 wiersza ci się nie wkleja. Może to być znak nie wyświetlany, więc wykasuj wszystko przed  $iLimit = 1 + 4*GUICtrlRead($hInput4)  i wstaw spacje z klawiatury.

Może pomoże.

Opublikowano

Kłopoty są  po twojej stronie. Sprawdziłem na innym komputerze. Chodzi bez problemu.

Analizując komunikat błędu wynika, że masz wstawiony jakiś dziwny znak (Â - kod 194)

 

Wstawiając u siebie ten znak na początku 22 wiersza otrzymałem identyczny komunikat błędu:

 

"D:\WASTA\Programy\xxx.au3"(22,1) : error: missing Until <expr>. (illegal character)

Ă

^

"D:\WASTA\Programy\xxx.au3"(21,1) : REF: missing Until <expr>.

Do

^

D:\WASTA\Programy\xxx.au3 - 1 error(s), 0 warning(s)

!>08:39:43 AU3Check ended. Press F4 to jump to next error.rc:2

+>08:39:43 AutoIt3Wrapper Finished.

>Exit code: 2    Time: 0.5129

 

Zobacz czy coś na początku 22 wiersza ci się nie wkleja. Może to być znak nie wyświetlany, więc wykasuj wszystko przed  $iLimit = 1 + 4*GUICtrlRead($hInput4)  i wstaw spacje z klawiatury.

Może pomoże.

 

Faktycznie jakiś niewidoczny znak się pojawił tam przez kopiowanie z forum i był w każdej linijce, w której był "TAB".

Mam jeszcze pytanie gdzie się ustawia limity? Bo widzę, że są ustawione te 3 co podałem ale jest ich więcej :D I chciałbym sobie je dodać.

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

$hInput4 = GUICtrlCreateInput(1, 20, 160, 50, 25, 0x800)
$hUpDown4 = GUICtrlCreateUpdown($hInput4)
GUICtrlSetLimit($hUpDown4, 3, 1)         ;ta 3 to ilość zakresów

...

$iLimit = 1 + 4*GUICtrlRead($hInput4)  ;ten wzór wylicza limit na danym zakresie

 

Jeżeli chciał byś powiększyć ilość pól, to niestety wymaga to rozbudowania kodu.

Opublikowano

$hInput4 = GUICtrlCreateInput(1, 20, 160, 50, 25, 0x800)

$hUpDown4 = GUICtrlCreateUpdown($hInput4)

GUICtrlSetLimit($hUpDown4, 3, 1)         ;ta 3 to ilość zakresów

...

$iLimit = 1 + 4*GUICtrlRead($hInput4)  ;ten wzór wylicza limit na danym zakresie

 

Jeżeli chciał byś powiększyć ilość pól, to niestety wymaga to rozbudowania kodu.

 

Czyli jak by chciał zrobić 7 inputów w których można dodać pkt z zakresu ponad 100 poziomów będzie trzeba ten kod przerobić czy wystarczy dodawać linijki z nowymi limitami? ^^

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Niestety trzeba rozbudować kod i będzie on dość długi,

Aby był krótszy, trzeba by zmienić strukturę danych (użyć tablic).

Opublikowano

Niestety trzeba rozbudować kod i będzie on dość długi,

Aby był krótszy, trzeba by zmienić strukturę danych (użyć tablic).

 

A ten kod co dał @Pawellek nadał by się na te ponad 100 poziomów? Czy też nie bardzo, bo on jest spoko tylko ten problem, że można dać minusowe pkt (poniżej 0)

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

To właśnie konieczność kontroli poprawności wprowadzonych danych wymusi rozbudowanie kodu.

Określ konkretnie jakie masz ostateczne wymagania, to będę mógł ci coś pomóc.

1. Ile ma być inputów.

2. Ile ma być poziomów punktacji.

3. Jaka ma byś ilość punktów do rozdzielenia na poszczególnych poziomach punktacji.

Opublikowano

@wasta

7inputow w ktorych rozdajemy pkt

140 poziomow punktow

1poziom daje 5pkt

Potem kazdy kolejny dodaje 4

1 = 5

2 = 9

3 = 13

4 = 17

...

...

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Opublikowano

Masz tu kod. Chyba o to ci chodziło.

Napisałem tak, aby kod był krótki i łatwy do modyfikacji.

#include <GUIConstantsEx.au3>

Dim $aInput[8][4]      ;tabela z uchwytami i nazwami inputów
Dim $iII=7             ;ilość inputów
Dim $iIZ=100           ;ilość zakresów
Dim $aLimit[$iII+1]    ;tablica limitów w inputach

;ilość inputów wpisana do tabel
$aInput[0][0] = $iII
$aLimit[0] = $iII
;nazwy inputów
$aInput[1][3] = "Cecha 1"
$aInput[2][3] = "Cecha 2"
$aInput[3][3] = "Cecha 3"
$aInput[4][3] = "Cecha 4"
$aInput[5][3] = "Cecha 5"
$aInput[6][3] = "Cecha 6"
$aInput[7][3] = "Cecha 7"

GUICreate("Mój skrypt z Inputami")
For $i=1 To $iII
   $aInput[$i][1] = GUICtrlCreateInput(0, 120, 20+($i-1)*30, 100, 25, 0x800)
   $aInput[$i][2] = GUICtrlCreateUpdown($aInput[$i][1])
   GUICtrlCreateLabel($aInput[$i][3], 50, 20+($i-1)*30)
Next

$hInput_Z = GUICtrlCreateInput(1, 120, 260, 50, 25, 0x800)
$hUpDown_Z = GUICtrlCreateUpdown($hInput_Z)
GUICtrlSetLimit($hUpDown_Z, $iIZ, 1)
GUICtrlCreateLabel("Nr zakresu:", 50, 260)
$hLab1 = GUICtrlCreateLabel("Ilość punktów do rozdania: 5   ", 50, 290)
$hLab2 = GUICtrlCreateLabel("Pozostało do rozdania:     5   ", 50, 310)
$hButton = GUICtrlCreateButton("KONIEC", 180, 360)

GUISetState()

$iLimitMem=0
Do
   $iLimit = 1 + 4*GUICtrlRead($hInput_Z)
   If $iLimit<>$iLimitMem Then GUICtrlSetData($hLab1, "Ilość punktów do rozdania: " & $iLimit)
   If $iLimit<$iLimitMem Then ClearInput($aInput)
   $iSuma = Suma($aInput)
   For $i=1 To $iII
      $aLimit[$i]=$iLimit - $iSuma + GUICtrlRead($aInput[$i][1])
   Next
   SetLimit($aLimit)
   GUICtrlSetData($hLab2, "Pozostało do rozdania:       " & $iLimit - $iSuma)
   $iLimitMem = $iLimit
   Sleep(20)
   $msg = GUIGetMsg()
Until $msg=$GUI_EVENT_CLOSE Or $msg=$hButton

MsgBox(64, "Ustawiono:", GUICtrlRead($aInput[1][1]) & @LF & _
                         GUICtrlRead($aInput[2][1]) & @LF & _
                         GUICtrlRead($aInput[3][1]) & @LF & _
                         GUICtrlRead($aInput[4][1]) & @LF & _
                         GUICtrlRead($aInput[5][1]) & @LF & _
                         GUICtrlRead($aInput[6][1]) & @LF & _
                         GUICtrlRead($aInput[7][1]))
;----------------------------------------------------------------------
Func Suma($aInput)  ;sumowanie wartości w inputach
   Local $iSuma
   For $i=1 To $aInput[0][0]
      $iSuma += GUICtrlRead($aInput[$i][1])
   Next
   Return $iSuma
EndFunc

Func SetLimit($aLimit)    ;ustawianie limitu w inputach
   For $i=1 To $aLimit[0]
      GUICtrlSetLimit($aInput[$i][2], $aLimit[$i], 0)
   Next
EndFunc

Func ClearInput($aInput)    ;zerowanie wartości w inputach
   For $i=1 To $aInput[0][0]
      GUICtrlSetData($aInput[$i][1], 0)
   Next
EndFunc
Opublikowano

 

Masz tu kod. Chyba o to ci chodziło.

Napisałem tak, aby kod był krótki i łatwy do modyfikacji.

#include <GUIConstantsEx.au3>

Dim $aInput[8][4]      ;tabela z uchwytami i nazwami inputów
Dim $iII=7             ;ilość inputów
Dim $iIZ=100           ;ilość zakresów
Dim $aLimit[$iII+1]    ;tablica limitów w inputach

;ilość inputów wpisana do tabel
$aInput[0][0] = $iII
$aLimit[0] = $iII
;nazwy inputów
$aInput[1][3] = "Cecha 1"
$aInput[2][3] = "Cecha 2"
$aInput[3][3] = "Cecha 3"
$aInput[4][3] = "Cecha 4"
$aInput[5][3] = "Cecha 5"
$aInput[6][3] = "Cecha 6"
$aInput[7][3] = "Cecha 7"

GUICreate("Mój skrypt z Inputami")
For $i=1 To $iII
   $aInput[$i][1] = GUICtrlCreateInput(0, 120, 20+($i-1)*30, 100, 25, 0x800)
   $aInput[$i][2] = GUICtrlCreateUpdown($aInput[$i][1])
   GUICtrlCreateLabel($aInput[$i][3], 50, 20+($i-1)*30)
Next

$hInput_Z = GUICtrlCreateInput(1, 120, 260, 50, 25, 0x800)
$hUpDown_Z = GUICtrlCreateUpdown($hInput_Z)
GUICtrlSetLimit($hUpDown_Z, $iIZ, 1)
GUICtrlCreateLabel("Nr zakresu:", 50, 260)
$hLab1 = GUICtrlCreateLabel("Ilość punktów do rozdania: 5   ", 50, 290)
$hLab2 = GUICtrlCreateLabel("Pozostało do rozdania:     5   ", 50, 310)
$hButton = GUICtrlCreateButton("KONIEC", 180, 360)

GUISetState()

$iLimitMem=0
Do
   $iLimit = 1 + 4*GUICtrlRead($hInput_Z)
   If $iLimit<>$iLimitMem Then GUICtrlSetData($hLab1, "Ilość punktów do rozdania: " & $iLimit)
   If $iLimit<$iLimitMem Then ClearInput($aInput)
   $iSuma = Suma($aInput)
   For $i=1 To $iII
      $aLimit[$i]=$iLimit - $iSuma + GUICtrlRead($aInput[$i][1])
   Next
   SetLimit($aLimit)
   GUICtrlSetData($hLab2, "Pozostało do rozdania:       " & $iLimit - $iSuma)
   $iLimitMem = $iLimit
   Sleep(20)
   $msg = GUIGetMsg()
Until $msg=$GUI_EVENT_CLOSE Or $msg=$hButton

MsgBox(64, "Ustawiono:", GUICtrlRead($aInput[1][1]) & @LF & _
                         GUICtrlRead($aInput[2][1]) & @LF & _
                         GUICtrlRead($aInput[3][1]) & @LF & _
                         GUICtrlRead($aInput[4][1]) & @LF & _
                         GUICtrlRead($aInput[5][1]) & @LF & _
                         GUICtrlRead($aInput[6][1]) & @LF & _
                         GUICtrlRead($aInput[7][1]))
;----------------------------------------------------------------------
Func Suma($aInput)  ;sumowanie wartości w inputach
   Local $iSuma
   For $i=1 To $aInput[0][0]
      $iSuma += GUICtrlRead($aInput[$i][1])
   Next
   Return $iSuma
EndFunc

Func SetLimit($aLimit)    ;ustawianie limitu w inputach
   For $i=1 To $aLimit[0]
      GUICtrlSetLimit($aInput[$i][2], $aLimit[$i], 0)
   Next
EndFunc

Func ClearInput($aInput)    ;zerowanie wartości w inputach
   For $i=1 To $aInput[0][0]
      GUICtrlSetData($aInput[$i][1], 0)
   Next
EndFunc

 

Kozak ziomuś <3 <3 <3:D Sypie ci tymi plusikami teraz dzięki wielkie!

10 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 200 | 300 400 | 500 | 600 | 700 | 800 | 900 | 1000logoskillowcy.png

 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...