Что нового

Подсчёт повтора функции.

kolosov

Новичок
Сообщения
137
Репутация
0
Ребят покажите как мне подсчетать сколько раз была повторена функция.
Что-то я пробовал, у меня не получилось (
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
Global $Counter = 0 ; глобальный счётчик

TestFunc() ; вызов функции
For $i = 0 To 7
  TestFunc() ; вызов функции
Next
TestFunc() ; вызов функции
ConsoleWrite("Функция вызывалась " & $Counter & " раз" & @LF)

Func TestFunc()
  $Counter += 1 ; увеличиваем счётчик
  ; что-то делаем
EndFunc
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
:
да уж, самое простое что может быть, и то не догадался к переменной 1 добавлять :shok:
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
OffTopic:
inververs [?]
Я думаю - догадался. Только либо локальную переменную внутри самой функции увеличивал, либо ему нужно встроенную функцию посчитать.
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Спасибо ребят. Только не понятно за чем ты три раза вызивал одну функцию?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
kolosov [?]
три раза вызивал одну функцию
Если вы запустите скрипт, то увидите, что функция вызывалась 10 раз. А зачем? Ну... чтобы подсчитать количество её вызовов.
Вам ведь именно это нужно? Или я чего-то из описания не понял? :scratch:
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Правельно спасибо.


Добавлено:
Сообщение автоматически объединено:

Ребят. Что-то у меня не вышло.
Написал вот такой код:

Код:
Global $Counter = 0
Func _Statistika()
   
   MsgBox(0,"Статистика","Повтор действий "&$counter & @LF)
   
EndFunc
Func StatInfo()
   
   IniWrite ("Setting.ini","Statistika","Statistika",$counter)
   $counter = IniRead("Setting.ini","Statistika","Statistika","0")
   
   EndFunc

$Statistika = GUICtrlCreateButton("Статистика",155,235)
GUICtrlSetOnEvent($Statistika,"_Statistika")
Statinfo()


Функция повторялась несколько раз.
А в файле всё равно стоит "0"
По чему он не меняеться на то сколько была повторена функция?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 328, 202, 192, 114)
$Button1 = GUICtrlCreateButton("Статистика", 126, 88, 75, 25)
GUISetState(@SW_SHOW)

Global $Counter = 0

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			_Statistika()
			Exit
		Case $Button1
			_StatInfo()
	EndSwitch
WEnd

Func _Statistika()
	
   $Counter = IniRead("Setting.ini","Statistika","Count","default")
   MsgBox(0,"Статистика","Нажатий "& $Counter & @LF)
EndFunc

Func _StatInfo()
	
	$Counter += 1 
   IniWrite("Setting.ini","Statistika","Count",$Counter)
EndFunc
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Или для последующего использования сохранённого значения можно заменить
Код:
Global $Counter = 0
на
Код:
Global $Counter = IniRead("Setting.ini","Statistika","Count","0")

Тем самым получив в переменную значение предыдущей статистики.
И вместо
Код:
,"Count","default")
я бы написал
Код:
,"Count","0")
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
alex33 [?]

слоган из рекламы сказал(а):
почувствуй разницу ;)
Код:
$Counter = IniRead("Setting.ini","Statistika","Count", "default" )

Switch $Counter
	Case '0'
		MsgBox(64, @ScriptDir,StringFormat('Нажатий: %s\n', $Counter))
	Case '1'
		MsgBox(64, @ScriptDir,StringFormat('Нажатий: %s\n', $Counter))
	Case 'default'
		MsgBox(16, @ScriptDir,StringFormat('Файл отсутствует %s\n', $Counter))
EndSwitch

IniWrite("Setting.ini","Statistika","Count", "0")
$Counter = IniRead("Setting.ini","Statistika","Count", "default" )

Switch $Counter
	Case '0'
		MsgBox(64, @ScriptDir,StringFormat('Нажатий: %s\n', $Counter))
	Case '1'
		MsgBox(64, @ScriptDir,StringFormat('Нажатий: %s\n', $Counter))
	Case 'default'
		MsgBox(16, @ScriptDir,StringFormat('Файл отсутствует %s\n', $Counter))
EndSwitch
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Что-то у тебя большой код получаеться. Или я что-то не понемаю :'(
Если тебя не затруднит, можеш тот код что я выше написал переделать чтобы он работал?
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Нет я не забыл. Он был прописан в функции которую хотел считать.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
kolosov
В ответе №6 белиберда.
Где ваша нормальный код?
Выложите его сюда.
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Код:
Global $Counter = 0
Func _Statistika()
   
   MsgBox(0,"Статистика","Повтор действий "&$counter & @LF)
   
EndFunc

func _func01()
while 1
$counter +=1
wend
endfunc


Func StatInfo()
   
   IniWrite ("Setting.ini","Statistika","Statistika",$counter)
   $counter = IniRead("Setting.ini","Statistika","Statistika","0")
   
   EndFunc

$Statistika = GUICtrlCreateButton("Статистика",155,235)
GUICtrlSetOnEvent($Statistika,"_Statistika")
Statinfo()
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
Global $Counter = 0

; Функция выводит колличество повторений ЧЕГО!!!
Func _Statistika()
   MsgBox(0,"Статистика","Повтор действий "& $counter & @LF)
EndFunc

; Функция глухо висит в цикле и грузит CPU!!!
; Кстати она нигде не вызывается???
func _func01()
	while 1
		$counter +=1
	wend
endfunc

; Функция читает и пишет в INI файл вечно пустую переменную $Counter!!!
Func StatInfo()
   IniWrite ("Setting.ini","Statistika","Statistika",$counter)
   $counter = IniRead("Setting.ini","Statistika","Statistika","0")
EndFunc
; На каком GUI рисуется кнопка!!!
$Statistika = GUICtrlCreateButton("Статистика",155,235)
; Непонятно как получить событие с кнопки на которую нельзя нажать!!!
GUICtrlSetOnEvent($Statistika,"_Statistika")

; КУЛЬМИНАЦИЯ!!! ВЫЗОВ ФУНКЦИИ!!!
Statinfo()

; И что ваш код делает, объясните? Лично я не пойму!!!



Добавлено:
Сообщение автоматически объединено:

Вот вам рабочий код.
Код:
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Статистика нажатий на кнопку:", 328, 202, 192, 114)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$Button1 = GUICtrlCreateButton("Статистика", 126, 88, 75, 25)
GUICtrlSetOnEvent(-1,"_Statistika")
GUISetState(@SW_SHOW)

Global $Counter = 0

While 1
	Sleep(30) 
WEnd


Func _Statistika()
	$Counter += 1 
	IniWrite("Setting.ini","Statistika","Count",$Counter)
	$Counter = IniRead("Setting.ini","Statistika","Count","default")
	WinSetTitle("Статистика нажатий на кнопку:", "",  "Статистика нажатий на кнопку: "& $Counter)
EndFunc

Func _Exit()
    If @GUI_CtrlId = $GUI_EVENT_CLOSE Then
		GUICtrlDelete($Form1)
		ConsoleWrite(StringFormat("Статистика нажатий: %s\n", $Counter))
		Exit
	EndIf
EndFunc
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Спасибо


Добавлено:
Сообщение автоматически объединено:

Это был кусочек кода из маего скрипта. А считал я сколкь раз повторяеться функция.

То что я суда выложил, я всеголиш скапировал всё что связано с повтором.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
kolosov,

Предупреждение За нарушение общих правил (пункт В.8):
Так как эта конференция называется "Русское сообщество AutoIt", язык общения на ней - Русский. Названия фирм или программных продуктов, аббревиатуры и т.д. должны быть написаны так, как они пишутся в оригинале, например не следует писать УСБ вместо USB. На форуме крайне не рекомендуется намеренно искажать русский язык и использовать "сетевой жаргон" на подобии "Аффтар выпей йадау!".


С уважением, ваш Глобальный модератор.
 
Верх