zfisherdrums Posted October 27, 2008 Posted October 27, 2008 (edited) Not the most useful thing as it is not feature complete, but a fun experiment nonetheless. Edit: What does it do? Well, it attempts to approximate the yield statement found in other languages, i.e. Ruby and C#. The purpose of the yield statement is to give control to a specified function from within the called function's body. Some security limitations - as well as my own intelligence limitations - make this example more of a conceptual example than fully functional. But oh well. Why did I place it here? Perhaps some poor soul will find themselves trapped under mounds of maintenance code, much of which relies on repetitious looping and iterating. Perhaps it will spark a better implementation. Who knows. That's the beauty of these forum thingys. expandcollapse popup#include <WinAPI.au3> Func Iterator( $loop, $yield ) Local $errorFlag = 0 For $i in $loop if ( IsObj( $i ) ) Then $command = StringFormat( "%s ( $item )", $yield ) ConsoleWrite( $command & @CRLF ) Call( $yield, $i ) If @error <> 0 then $errorFlag = @error Else $command = StringFormat( $yield, $i ) ConsoleWrite( $command & @CRLF ) Execute( $command ) If @error <> 0 then $errorFlag = @error EndIf Next SetError( $errorFlag ) EndFunc #region Example Functions ; The following are example functions that will be called by the Iterator function Func ShowMeFromArray( $msg ) ; Helo Werldz MsgBox(0, "ShowMeFromArray", $msg ) EndFunc Func TwoToThePowerOf( $exponent ) ; Display two to the power of a supplied exponent MsgBox(0, "TwoToThePowerOf", 2 ^ $exponent ) EndFunc Func ShowMeFromCollection( $item ) ; Some kind of window-releated activity is simulated here ; Because of AutoIts restrictions against window-operations ; proceeding from Call'ed, Execute'd statements - we'll use ; the WinAPI include to achieve the desired result. MsgBox(0, "ShowMeFromCollection", "Press 'OK' to maximize " & $item.LocationName ) _WinAPI_ShowWindow( $item.HWND, @SW_MAXIMIZE ) MsgBox(0, "ShowMeFromCollection", "Press 'OK' to minimize " & $item.LocationName ) _WinAPI_ShowWindow( $item.HWND, @SW_MINIMIZE ) SetError( 1 ) EndFunc #EndRegion Dim $test = StringSplit( "1,2,3", "," ) Iterator( $test, 'ShowMeFromArray( "%s" )' ) Iterator( $test, 'TwoToThePowerOf( "%s" )' ) ConsoleWrite( @error & @CRLF) $oShell = ObjCreate("shell.application") $oShellWindows=$oShell.windows Iterator( $oShellWindows, "ShowMeFromCollection" ) ConsoleWrite( @error & @CRLF) Edited October 27, 2008 by zfisherdrums errandfox 1 Identify .NET controls by their design time namesLazyReader© could have read all this for you. Unit Testing for AutoItFolder WatcherWord Doc ComparisonThis here blog...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now