Sign in to follow this  
Followers 0
luckyluke

How to call a fuction only one times in while loop

10 posts in this topic

Here my code:

While 1
    $temp = GUICtrlRead(GUICtrlRead($listview1))
    If $temp == 0 Then
    Else
        Call("getinfo")
    EndIf
    
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Func getinfo()

EndFunc

How to call function getinfo() only one time when $temp <> 0 ???

Share this post


Link to post
Share on other sites



If you only need it once it would be easier to place the function call before your while loop. If you must have it in your while loop then try something like this.

CODE
While 1

$temp = GUICtrlRead($listview1) ;only need to read it once.

If $temp = 0 Then

Else

Call("getinfo")

$temp = 0

EndIf

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

EndSwitch

WEnd

Func getinfo()

EndFunc

Share this post


Link to post
Share on other sites

Here my code:

While 1
    $temp = GUICtrlRead(GUICtrlRead($listview1))
    If $temp == 0 Then
    Else
        Call("getinfo")
    EndIf
    
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Func getinfo()

EndFunc

How to call function getinfo() only one time when $temp <> 0 ???

Try

$counter = 0
While 1
    $temp = GUICtrlRead(GUICtrlRead($listview1))
    If $temp == 0 Then
    Else
        If $counter = 0 Then
            Call("getinfo")
            $counter = $counter + 1
        EndIf
    EndIf
    
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Func getinfo()

EndFunc

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Try this something simple I commonly do in similiar cases

Basically your just counting the loops and using an if statement so it only runs while $Loop = 1 being the first time it runs.

$Loop = 0
While 1
    $Loop = $Loop + 1
    If $Loop = 1 Then
      ;One Time Commands
    EndIf
    $temp = GUICtrlRead(GUICtrlRead($listview1))
    If $temp == 0 Then
    Else
        Call("getinfo")
    EndIf
    
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd
Edited by ken82m

My Contributions _StringMultiReplace PC Builders Console - Secure PDF Creator - Cisco VPN Installer MS DNS Server Backup Script - MS DHCP Backup Script IT Admin Console - Toggle Admin Mode - MyMovies-Add Discs Script - IT Help Desk and System Information Tool - Set On Lid Close Power Option - Streaming Media Server & Website "I believe that when we leave a place, part of it goes with us and part of us remains... Go anywhere, when it is quiet, and just listen.. After a while, you will hear the echoes of all our conversations, every thought and word we've exchanged.... Long after we are gone our voices will linger in these walls for as long as this place remains."

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

nevermind, almost the same thing erik just gave you really.

Kenny

Edited by ken82m

My Contributions _StringMultiReplace PC Builders Console - Secure PDF Creator - Cisco VPN Installer MS DNS Server Backup Script - MS DHCP Backup Script IT Admin Console - Toggle Admin Mode - MyMovies-Add Discs Script - IT Help Desk and System Information Tool - Set On Lid Close Power Option - Streaming Media Server & Website "I believe that when we leave a place, part of it goes with us and part of us remains... Go anywhere, when it is quiet, and just listen.. After a while, you will hear the echoes of all our conversations, every thought and word we've exchanged.... Long after we are gone our voices will linger in these walls for as long as this place remains."

Share this post


Link to post
Share on other sites

thanks all, but how to get one time commands when $temp change from GUICtrlRead($listview1)

Share this post


Link to post
Share on other sites

thanks all, but how to get one time commands when $temp change from GUICtrlRead($listview1)

Can you rephrase your question and perhaps give some examples?

It's a little ambiguous and I'm not sure if the nested GUICtrlRead's are intended.

Here's how I would interpret it, based on your original post and your last reply:

"How can I trigger a function every time the value in $listview1 changes? (Different Control is listed)"

$LastControl = GUICtrlRead($listview1)
While 1
    If $LastControl <> GUICtrlRead($listview1) Then
        $LastControl = GUICtrlRead($listview1)
        getinfo()
    EndIf

    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEndoÝ÷ Ø    mz¹Úµérªê-jr-®( z¶ºw-Þ½êò¶)¶¯j[{ayÊ'¶º%­çÞ­éÜyÖòÓ~¥Ëoì5r§ëjg¢{k¢Pâ}÷«z{oj[ªê-jëh×6$LastValue = GUICtrlRead(GUICtrlRead($listview1))
While 1
    If $LastValue <> GUICtrlRead(GUICtrlRead($listview1)) Then
        $LastValue = GUICtrlRead(GUICtrlRead($listview1))
        getinfo()
    EndIf

    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

[font="Tahoma"]"Tougher than the toughies and smarter than the smarties"[/font]

Share this post


Link to post
Share on other sites

I'm done, thank Skruge. Here my code:

#include <GUIConstants.au3>
#include <String.au3>
#include <array.au3>
#include <INet.au3>


$Form1 = GUICreate("Comic.vuilen.com", 633, 447, 193, 125)
;$Edit1 = GUICtrlCreateEdit("", 16, 16, 289, 409)
GUICtrlSetData(-1, "")
$listview1 = GUICtrlCreateListView("   STT   |           Booklist           ", 16, 16, 289, 409)


$Group1 = GUICtrlCreateGroup("Group1", 328, 25, 281, 145)
$Label1 = GUICtrlCreateLabel("Info", 328, 25, 59, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Part", 352, 64, 43, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Status", 352, 112, 63, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label5 = GUICtrlCreateLabel("", 480, 60, 100, 80)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("", 480, 64, 100, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)


Global $book, $temp
Global $bookid[5]

$files = _INetGetSource('http://comic.vuilen.com/')
$aArray1 = _StringBetween($files, "<option value='viewbook.php?bookid=", "</option>");Not using SRE
_ArrayAdd($aArray1, "EndOfList")
$book = _ArraySearch($aArray1, "EndOfList")


For $i = 0 To ($book-1)
    $array = StringSplit($aArray1[$i], ">")
    GUICtrlCreateListViewItem(& ($i+1)"|" & $array[2] , $listview1)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)  ; to allow drag and dropping
Next


$temp = GUICtrlRead(GUICtrlRead($listview1))
MsgBox(0,"", $temp)
While 1
    If $temp <> GUICtrlRead($listview1) Then
        $temp = GUICtrlRead(GUICtrlRead($listview1))
        call("getinfo")
    EndIf
    
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Func getinfo()
    For $i = 0 To ($book-1)
        $select = StringSplit($temp, "|")
        $bookid = StringSplit($aArray1[$select[1]-1], "'")
        ExitLoop
    Next
        $info = _INetGetSource("http://comic.vuilen.com/viewbook.php?bookid="& $bookid[1])
        $aArray2 = _StringBetween($info, '<tr class="thead"><td  ><b>', "</b></td><tr>")
        $state = StringSplit($aArray2[0], "-")
        GUICtrlSetData($Label5, $state[3])
        GUICtrlSetData($Label4, $state[2])
EndFunc

One last question: How to display my language (vietnamese) in autoit ???. I have been chosen file>encoding>UTF-8 but nothing change.

Share this post


Link to post
Share on other sites

I'm done, thank Skruge. Here my code:

#include <GUIConstants.au3>
#include <String.au3>
#include <array.au3>
#include <INet.au3>


$Form1 = GUICreate("Comic.vuilen.com", 633, 447, 193, 125)
GUICtrlSetData(-1, "")
$listview1 = GUICtrlCreateListView("   STT   |           Booklist           ", 16, 16, 289, 409)


$Group1 = GUICtrlCreateGroup("Group1", 328, 25, 281, 145)
$Label1 = GUICtrlCreateLabel("Info", 328, 25, 59, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Part", 352, 64, 43, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Status", 352, 112, 63, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label5 = GUICtrlCreateLabel("", 480, 60, 100, 80)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("", 480, 64, 100, 20)
GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)


Global $book, $temp
Global $bookid[5]

$files = _INetGetSource('http://comic.vuilen.com/')
$aArray1 = _StringBetween($files, "<option value='viewbook.php?bookid=", "</option>");Not using SRE
_ArrayAdd($aArray1, "EndOfList")
$book = _ArraySearch($aArray1, "EndOfList")

;#cs
For $i = 0 To ($book-1)
    $array = StringSplit($aArray1[$i], ">")
    GUICtrlCreateListViewItem(& ($i+1)"|" & $array[2] , $listview1)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)  ; to allow drag and dropping
Next
;#ce

$temp1 = GUICtrlRead($listview1)
MsgBox(0,"", $temp)
While 1
    If $temp1 <> GUICtrlRead($listview1) Then
        $temp1 = GUICtrlRead($listview1)
        $temp = GUICtrlRead(GUICtrlRead($listview1))
        call("getinfo")
    EndIf
    
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

    EndSwitch
WEnd

Func getinfo()
    For $i = 0 To ($book-1)
        $select = StringSplit($temp, "|")
        $bookid = StringSplit($aArray1[$select[1]-1], "'")
        ExitLoop
    Next
        $info = _INetGetSource("http://comic.vuilen.com/viewbook.php?bookid="& $bookid[1])
        $aArray2 = _StringBetween($info, '<tr class="thead"><td  ><b>', "</b></td><tr>")
        $state = StringSplit($aArray2[0], "-")
        GUICtrlSetData($Label5, $state[3])
        GUICtrlSetData($Label4, $state[2])
EndFunc

One last question: How to display my language (vietnamese) in autoit ???. I have been chosen file>encoding>UTF-8 but nothing change.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0