Что нового

Как сделать чтобы две функции работали вместе

assch

Новичок
Сообщения
166
Репутация
4
Не большой код для примера.
При нажатии на кнопку начинает мигать (пока только для примера 3 раза) надпись "Загрузка"
И только по завершении включится функция (в данном случае тоже просто для примера простой Меседжбокс) Мне нужно чтобы эти две функции включились бы сразу вместе (вместо месаджбокса
будет конечно другая функция например по сбору информации) то есть пока идёт сбор информации
надпись "Загрузка" должна мигать а по завершении должна перестать мигать. То есть пока работает
функция сделать небольшую анимацию.

Код:
#include <GUIConstantsEx.au3>      

$hGui = GUICreate("", 200, 100, -1, -1)
$hButton = GUICtrlCreateButton("Старт", 50, 50, 100, 25)
$hLabel = GUICtrlCreateLabel("Загрузка", 70, 10,100,30)
GUICtrlSetFont($hLabel, 12, 200, 0, "Arial")
GUICtrlSetColor($hLabel,0x0000ff)
GUICtrlSetState($hLabel, $GUI_HIDE)
GUISetState()

While 1

    Switch GUIGetMsg()
        Case - 3
            Exit
        Case $hButton
             Function()  
             MsgBox(32, "","Тест",3)
    EndSwitch
WEnd

Func Function()
for $i = 1 to 3
 GUICtrlSetState($hLabel, $GUI_SHOW)            
Sleep(500)
GUICtrlSetState($hLabel, $GUI_HIDE)
Sleep(500)
Next
EndFunc

Использовать функцию Месаджбокса для примера было наверное с моей стороны не правильно. Попробывал вставить ту функцию для которой эта анимация и делалась
Попробывал применить функцию AdlibRegister вроде бы получилось.
Не подскажете теперь как корректно выйти из этой анимации когда основные функции
по сбору информации закончат своё дело (то есть как корректно погасить процесс)

Код:
#include <GUIConstantsEx.au3>

Global $Array,$Pap,$Fil,$Ard,$p = 1

GUICreate("")
$hButton = GUICtrlCreateButton("Старт", 50, 50, 100, 25)
$hLabel = GUICtrlCreateLabel("Загрузка", 70, 10,100,30)
GUICtrlSetFont($hLabel, 12, 200, 0, "Arial")
GUICtrlSetColor($hLabel,0x0000ff)
GUICtrlSetState($hLabel, $GUI_HIDE)
GUISetState()
While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
            Case $hButton
            AdlibRegister("Timer", 500)
           File("C:")
           Dir("File.txt","Info.txt")
        EndSwitch
WEnd
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func Timer()
if $p  = 1 Then
    GUICtrlSetState($hLabel, $GUI_SHOW)            
    $p  = 2
Else
    GUICtrlSetState($hLabel, $GUI_HIDE)
   $p  = 1 
EndIf        
EndFunc 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;    
Func File($Path)
$First = FileFindFirstFile($Path & "\" & "*")
While 1
$File = FileFindNextFile($First)
$sTime = FileGetTime($Path & '\' & $File)
If $File = "" Then ExitLoop
$Fisd = $Path & '\' & $File 
$Attr = FileGetAttrib($Fisd)
$Sult = StringInStr($Attr, "D")
If $Sult > 0 Then
$Array &= $Fisd & '|||' &  '   ' & $sTime[2] & '-' & $sTime[1] & '-' & $sTime[0] & '   ' & $sTime[3] & ':' & $sTime[4] & ':' & $sTime[5]  & @CR
$Pap +=1
File($Fisd)
Else
$Array &= $Path & '\' & $File & '|||' &  '   ' & $sTime[2] & '-' & $sTime[1] & '-' & $sTime[0] & '   ' & $sTime[3] & ':' & $sTime[4] & ':' & $sTime[5] & @CR
$Fil+=1
EndIf
WEnd
EndFunc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Func Dir($w1,$w2)
$Txt = FileOpen($w1,2)
FileWrite($Txt, $Array & "zzzzzzz")
FileClose($Txt)    
$Ard = 'Папки : ' & $Pap & '   Файлы : ' &  $Fil
$Txt = FileOpen($w2,2)
FileWrite($Txt, $Ard)
FileClose($Txt)
$Array = ""
$Pap = ""
$Fil = ""
$Ard = ""
EndFunc
 
Автор
A

assch

Новичок
Сообщения
166
Репутация
4
Спасибо dwerf
Можно было бы элементарно вставить какую нибудь анимированную Gif Просто я хотел попробывать
анимацию сделать из подручных средств наверное наивно полагая что с такой простенькой
анимацией основные функции будут работать чуть по легче (хотя наверное я заблуждаюсь)

Не подскажешь в одной теме при обсуждении одной программы написали
И самое неприятное, происходит утечка памяти, не очень большая, но есть. Где-то что-то ты не освободил...Как интересно определяется утечка памяти?
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
218
Вероятно имелось ввиду нечто такое: http://ru.wikipedia.org/wiki/Утечка_памяти.
Определяется банально: taskmgr.exe, вкладка Processes, значение Mem Usage у соответствующего процесса слишком большое / растёт.
 
Автор
A

assch

Новичок
Сообщения
166
Репутация
4
Спасибо dwerf
за информацию
 
Верх