UPSman2 Posted June 11, 2008 Author Posted June 11, 2008 (edited) ok i think i made a faster one.... proof?: original way (1mb file 1000 matches):5301.12, 5287.39, 5286.29 New way (1mb file 1000 matches): 33.31, 32.29, 35.5 $dir = FileOpenDialog ( "Open file", @ScriptDir, "Text files (*.txt)") $SearchString =InputBox ( "Search", "Search for all occurences of this string:") $String = FileRead ( $dir) $a = TimerInit() $search2 = StringLen($SearchString) $split = StringSplit ( $String, $SearchString, 1) $search = StringInStr($string, $SearchString, 1, 1) $split[0] = $split[0] -1 ;converting to # found $split[1] = StringLen($split[1]) + 1 $split[2] = $split[1] + (StringLen($split[2])+ $search2) For $trig = 3 to $split[0] Step 1 $split[$trig] = $split[$trig-1] + (StringLen($split[$trig])+ $search2) Next MsgBox(0,"","Time tooken: " & TimerDiff($a)) MsgBox(0,"","Found:" & $split[0] & " 1:"& $split[1] & " 2:"& $split[2] & " 3:"& $split[3] & " 4:"& $split[4]) it still needs more fine tuning but... its FAST but if anyone can make this faster im open to suggestions Edited June 11, 2008 by UPSman2
UPSman2 Posted June 11, 2008 Author Posted June 11, 2008 please note its faster if you build this in into your script instead of using this udf also note that compared to my first one it is nearly the same speed on smaller files, but it gets much faster on larger files with a lot of occurrences. heres my udf: ;============================================================================================= ; Function: String_FindAll($String,$SearchString) ; ; Description: Searches a string for all occurences of a substring and returns and array ; ; Parameter(s): $String- a string to search in ; $SearchString- the substring to search winthint $string ; ; Return: Returns an array with $array[0] contains the number of strings returned ; ; Author: UPSman2 ;=============================================================================================== Func String_FindAll($String,$SearchString) $StringLen1 = StringLen($SearchString) $StringSplit = StringSplit($String, $SearchString, 1) $StringSplit[0] = $StringSplit[0] -1 ;converting to # found $StringSplit[1] = StringLen($StringSplit[1]) + 1 If $StringSplit[0] >= 2 Then $StringSplit[2] = $StringSplit[1] + (StringLen($StringSplit[2])+ $StringLen1) If $StringSplit[0] >= 3 Then For $trig = 3 to $StringSplit[0] Step 1 $StringSplit[$trig] = $StringSplit[$trig-1] + (StringLen($StringSplit[$trig])+ $StringLen1) Next EndIf EndIf Return $StringSplit EndFunc feel free to suggest a faster way
Moderators SmOke_N Posted June 11, 2008 Moderators Posted June 11, 2008 please note its faster if you build this in into your script instead of using this udf also note that compared to my first one it is nearly the same speed on smaller files, but it gets much faster on larger files with a lot of occurrences. heres my udf: ;============================================================================================= ; Function: String_FindAll($String,$SearchString) ; ; Description: Searches a string for all occurences of a substring and returns and array ; ; Parameter(s): $String- a string to search in ; $SearchString- the substring to search winthint $string ; ; Return: Returns an array with $array[0] contains the number of strings returned ; ; Author: UPSman2 ;=============================================================================================== Func String_FindAll($String,$SearchString) $StringLen1 = StringLen($SearchString) $StringSplit = StringSplit($String, $SearchString, 1) $StringSplit[0] = $StringSplit[0] -1 ;converting to # found $StringSplit[1] = StringLen($StringSplit[1]) + 1 If $StringSplit[0] >= 2 Then $StringSplit[2] = $StringSplit[1] + (StringLen($StringSplit[2])+ $StringLen1) If $StringSplit[0] >= 3 Then For $trig = 3 to $StringSplit[0] Step 1 $StringSplit[$trig] = $StringSplit[$trig-1] + (StringLen($StringSplit[$trig])+ $StringLen1) Next EndIf EndIf Return $StringSplit EndFunc feel free to suggest a faster way That's close to how I would have approached it... or using StringInStr + Start Pos param ... but I think the stringsplit would be much faster. Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
UPSman2 Posted June 11, 2008 Author Posted June 11, 2008 That's close to how I would have approached it... or using StringInStr + Start Pos param ... but I think the stringsplit would be much faster.StringInStr + Start Pos param is slower than stringsplit
Moderators SmOke_N Posted June 11, 2008 Moderators Posted June 11, 2008 StringInStr + Start Pos param is slower than stringsplitYeah, natively I can definately see this without even testing it... split + math would be the logical choice which it seems you've figured out on your own. Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
Spiff59 Posted June 11, 2008 Posted June 11, 2008 (edited) How many tics does this version eat up? ; 0 ' 1 ' 2 ' 3 ' 4 $string = "autoit autoit blah autoit autoit" $find = "autoit" $findlen = StringLen($find) $i = 0 $start = 1 While 1 $search = StringInStr($string, $find, 0, 1, $start) If Not $search Then ExitLoop $i += 1 MsgBox(0,"","Match " & $i & " at position: " & $search) $start = $search + $findlen ; $start += 1; or if search strings can overlap - i.e.: if looking for "dumdum", should "dumdumdumdum" return 2 or 3 hits? WEnd MsgBox(0,"","Matches Found: " & $i) Seems pretty clean to me... Of course the MsgBox in the loop skews things. Using $i as the subscript to load an array then dumping the array after the loop would be the better benchmark. Edited June 11, 2008 by Spiff59
Moderators SmOke_N Posted June 11, 2008 Moderators Posted June 11, 2008 (edited) How many tics does this version eat up? ; 0 ' 1 ' 2 ' 3 ' 4 $string = "autoit autoit blah autoit autoit" $find = "autoit" $findlen = StringLen($find) $i = 0 $start = 1 While 1 $search = StringInStr($string, $find, 0, 1, $start) If Not $search Then ExitLoop $i += 1 MsgBox(0,"","Match " & $i & " at position: " & $search) $start = $search + $findlen ; $start += 1; or if search strings can overlap - i.e.: if looking for "dumdum", should "dumdumdumdum" return 2 or 3 hits? WEnd MsgBox(0,"","Matches Found: " & $i) Seems pretty clean to me...Just looking at it, I'd say it's at least 5 times slower. Edit: Oops, put the statement in the quote Edited June 11, 2008 by SmOke_N Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
Spiff59 Posted June 12, 2008 Posted June 12, 2008 (edited) Just looking at it, I'd say it's at least 5 times slower. Edit: Oops, put the statement in the quote The StringInStr method wins the KISS award, but does appear to be internally slower than the StringSplit call, by about 25% in my runs. Since he's after speed you're definately pointing him in the right direction. So why the extra code in that routine? Wouldn't this do the same thing? Func String_FindAll($String,$SearchString) $StringLen1 = StringLen($SearchString) $StringSplit = StringSplit($String, $SearchString, 1) $StringSplit[0] -= 1;converting to # found $StringSplit[1] = StringLen($StringSplit[1]) + 1 For $trig = 2 to $StringSplit[0] Step 1 $StringSplit[$trig] = $StringSplit[$trig-1] + (StringLen($StringSplit[$trig])+ $StringLen1) Next Return $StringSplit EndFunc Edit: Wow! 12k posts... Am guessing that including the optional "Step 1" and using ">= 2" instead of "> 1" trim a few op codes from the executable? Is the for/next kludgy enough to warrant the superfluous If/then's for occurances less than 2? Edited June 12, 2008 by Spiff59
Moderators SmOke_N Posted June 12, 2008 Moderators Posted June 12, 2008 The StringInStr method wins the KISS award, but does appear to be internally slower than the StringSplit call, by about 25% in my runs. Since he's after speed you're definately pointing him in the right direction. So why the extra code in that routine? Wouldn't this do the same thing? Func String_FindAll($String,$SearchString) $StringLen1 = StringLen($SearchString) $StringSplit = StringSplit($String, $SearchString, 1) $StringSplit[0] -= 1;converting to # found $StringSplit[1] = StringLen($StringSplit[1]) + 1 For $trig = 2 to $StringSplit[0] Step 1 $StringSplit[$trig] = $StringSplit[$trig-1] + (StringLen($StringSplit[$trig])+ $StringLen1) Next Return $StringSplit EndFunc Edit: Wow! 12k posts... Am guessing that including the optional "Step 1" and using ">= 2" instead of "> 1" trim a few op codes from the executable? Is the for/next kludgy enough to warrant the superfluous If/then's for occurances less than 2?This is not your first Rodeo I take it? You forgot to point out, that even though they are declared local vars (Inside the function) by autoit if not declared as global already, that it's still a good idea to declare them locally (as others may use Opt("MustDeclareVars", 1) at some time ... @12k posts, yeah... I had my awesome bot make all the posts for me so I could be ahead of Jos's count, if for some reason my post count is less than 10.8 in a day, it logins for me and post some random gibberish ... Not unlike this rambling I'm doing now. Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.
UPSman2 Posted June 12, 2008 Author Posted June 12, 2008 (edited) kinda on topic but maybe not... (its the code i was implementing this topic into) but why does this crash autoit (i've narrowed it down to the stringinstr function is where it's crashing) have windows calculator open when you run this... expandcollapse popup#include <NomadMemory.au3> #Include <Array.au3> dim $ValidMemory[500][2] $ProcessHandle = _MemoryOpen(ProcessExists("calc.exe")) VirtualQuery() SearchData("01000000") Func SearchData($Data) ;i think needs more work $n = 0 Do $n = $n + 1 $Memory_Read = _MemoryRead($ValidMemory[6][0], $ProcessHandle, 'byte['&$ValidMemory[6][1]&']') ;reads bytes $StringSplit3 = StringSplit($Memory_Read, "1", 1) ControlSetText ( "yo.txt - Notepad", "", "Edit1", $Memory_Read) ;~ String_FindAll($Memory_Read,$Data) Until $n = $ValidMemory[0][0] EndFunc Func VirtualQuery() ;functional but rewriteable Local $StartMemory = 0 ;Dec(0x00000000) Local $EndMemory = 4294967295 ;Dec(0xFFFFFFFF) Local $Address, $LastAddress, $n = 0, $BaseAddress, $RegionSize, $State Local $Buffer = DllStructCreate('dword;dword;dword;dword;dword;dword;dword') While 1 DllCall($ProcessHandle[0], 'int', 'VirtualQueryEx', 'int', $ProcessHandle[1], 'int', $Address, 'ptr', DllStructGetPtr($Buffer), 'int', DllStructGetSize($Buffer)) $BaseAddress = '0x' & Hex(DllStructGetData($Buffer, 1)); + 0) $RegionSize = DllStructGetData($Buffer, 4) $AllocProtect = Hex(DllStructGetData($Buffer, 3)) $LastAddress = $Address $Address = '0x' & Hex($BaseAddress + $RegionSize) If $AllocProtect = 0x04 Then ; if isn't protected $n = $n + 1 $ValidMemory[$n][0] = $BaseAddress ;address $ValidMemory[$n][1] = $RegionSize; distance of good $ValidMemory[0][0] = $n EndIf If $BaseAddress < 0 Then $BaseAddress = 2147483648 + ($BaseAddress) + 2147483648 EndIf If ($BaseAddress + $RegionSize) >= $EndMemory Then ExitLoop EndIf If $Address = $LastAddress Then ExitLoop EndIf WEnd EndFunc Func String_FindAll($String,$SearchString) $StringLen1 = StringLen($SearchString) $StringSplit = StringSplit($String, $SearchString, 1) $StringSplit[0] = $StringSplit[0] -1 ;converting to # found $StringSplit[1] = StringLen($StringSplit[1]) + 1 If $StringSplit[0] <> 1 Then If $StringSplit[0] >= 2 Then $StringSplit[2] = $StringSplit[1] + (StringLen($StringSplit[2])+ $StringLen1) If $StringSplit[0] >= 3 Then For $trig = 3 to $StringSplit[0] Step 1 $StringSplit[$trig] = $StringSplit[$trig-1] + (StringLen($StringSplit[$trig])+ $StringLen1) Next EndIf EndIf EndIf Return $StringSplit EndFuncoÝ÷ Ú))äx-«b(!¶wvÚ¢{Þ®Ûaz·º¹è~Ø^騯*Þiا¶¬¶¸§²×vÚìZuç"©l¶¸§»·¢}ý¶IèÂÇ¢wm)äx-+"(!¶ç¢Úk¢øy×§¢è!wèm«"q©rÛ²x©¡ö¦zj+ÊÇÈ^®+Þmç§¶¼¢h©¶¬¶¸§)ì¶·îËb¢|(®KºØ¶Çky§_ºYr²Z0¡ùZ®«¦º ©¬êÞ²Ø^²«qê¯yÚ'zíéò±æ«r«²Ú®+ajËazËkx"Ëkëa¡Ö®¶sb6æ6ÇVFRfÇC´uT6öç7FçG4WæS2fwC°¢6æ6ÇVFRfÇCµvæF÷w46öç7FçG2æS2fwC°¢6æ6ÇVFRfÇC´æöÖDÖVÖ÷'æS2fwC°¢4æ6ÇVFRfÇC´wVÆ7EfWræS2fwC° ¢5&VvöâwVf÷&Ó¢b33c´wVôf÷&ÓÒuT7&VFRgV÷C´×"â6V&6gV÷C²Â3#RÂ3sÂ#3rÂC¢b33c´÷Våô'WGFöâÒuT7G&Ä7&VFT'WGFöâgV÷C´÷VâgV÷C²ÂÂÂSÂ#¢b33c´Æ&VÃÒuT7G&Ä7&VFTÆ&VÂgV÷Cµ6V&6fÇVS¢gV÷C²ÂRÂCrÂsÂr¢b33cµ6V&6ôçWBÒuT7G&Ä7&VFTçWBgV÷C²gV÷C²ÂRÂcBÂCRÂ#¢b33c´w&÷WÒuT7G&Ä7&VFTw&÷WgV÷C´FFGRgV÷C²ÂsÂCÂsÂsR¢b33c´FV6ÖÅõ&FòÒuT7G&Ä7&VFU&FògV÷C´FV6ÖÂgV÷C²ÂÂcÂSRÂr¤uT7G&Å6WE7FFRÓÂb33c´uTô4T4´TB¢b33cµFWEõ&FòÒuT7G&Ä7&VFU&FògV÷CµFWBgV÷C²ÂÂ"ÂSRÂr¤uT7G&Ä7&VFTw&÷WgV÷C²gV÷C²ÂÓÂÓ¢b33cµ6V&6ô'WGFöâÒuT7G&Ä7&VFT'WGFöâgV÷Cµ6V&6gV÷C²ÂRÂrÂsRÂ#R¢b33c´6æ6VÅô'WGFöâÒuT7G&Ä7&VFT'WGFöâgV÷C´6æ6VÂgV÷C²ÂRÂrÂsRÂ#R¤uT7G&Å6WE7FFRÓÂb33c´uTôDR¢b33cµ&VfæUô'WGFöâÒuT7G&Ä7&VFT'WGFöâgV÷Cµ&VfæRgV÷C²ÂÂrÂsRÂ#R¤uT7G&Å6WE7FFRÓÂb33c´uTôDR¢b33cµ&öw&W74&"ÒuT7G&Ä7&VFU&öw&W72sRÂ2Â#2Âr¢b33cµ6V&6ôÆ&VÂÒuT7G&Ä7&VFTÆ&VÂgV÷C´æ÷BGF6VBgV÷C²ÂCrÂ#ÂcrÂr¢b33cµ&WGW&åôÆ7EfWrÒuT7G&Ä7&VFTÆ7EfWrgV÷C´FG&W77ÅfÇVRgV÷C²ÂÂSÂ#CÂ#B¤uT7G&Å6VæD×6rÓÂR¤uT7G&Å6VæD×6rÓÂR¢b33cµ&Vg&W6ô'WGFöâÒuT7G&Ä7&VFT'WGFöâgV÷Cµ&Vg&W6gV÷C²Â#SRÂc"ÂSBÂ#R¢b33c´ÖöFgô'WGFöâÒuT7G&Ä7&VFT'WGFöâgV÷C´ÖöFggV÷C²Â#SRÂRÂSrÂ#R¤uT6WE7FFR5uõ4õrÂb33c´wVôf÷&Ó¢4VæE&Vvöà ¢5&Vvöâf&&ÆRFV0¤vÆö&Âb33cµ&ö6W74æFÆRÂb33c¶FG&W75³ÒÂb33cµfÆDÖVÖ÷'³SÕ³%Т4VæE&Vvöà ¥vÆR¢b33c´×6sÒuTvWD×6r 7vF6b33c´×6s 66Rb33c´uTôUdTåEô4Äõ4P W@ 66Rb33c´÷Våô'WGFöà ÷Vå&ö6W72 66Rb33cµ6V&6ô'WGFöà bb33cµ&ö6W74æFÆRÒFVà ×6t&÷cBÂgV÷C´W'&÷"gV÷C²ÂgV÷Cµ6VÆV7B&ö6W72Fò6V&6â&Vf÷&R6V&6ærâgV÷C² VÇ6P ôuT7G&ÄÆ7EfWuôFVÆWFTÆÄFV×2uT7G&ÄvWDæFÆRb33cµ&WGW&åôÆ7EfWr uT7G&Å6WE7FFRb33cµ6V&6ô'WGFöâÂb33c´uTôDR uT7G&Å6WE7FFRb33cµ&VfæUô'WGFöâÂb33c´uTõ6÷r uT7G&Å6WE7FFRb33c´6æ6VÅô'WGFöâÂb33c´uTõ6÷r uT7G&Å6WDFFb33cµ6V&6ôÆ&VÂÂgV÷Cµ6V&6ærâââgV÷C² f'GVÅVW' b33cµ6V&6õfÇVRÒuT7G&Å&VBb33cµ6V&6ôçWB b33c·2ÒFÖW$æB 6V&6FF6öçfW'EFõ6V&6b33cµ6V&6õfÇVR ×6t&÷ÂgV÷C²gV÷C²ÅFÖW$Ffbb33c·2 uT7G&Å6WDFFb33cµ6V&6ôÆ&VÂÂgV÷C´FöæRgV÷C² VæD` 66Rb33c´6æ6VÅô'WGFöà &W6WDwV VæE7vF6¥tVæ@ ¤gVæ26öçfW'EFõ6V&6b33c´FFô6öçfW'Fær¶FöæP Æö6Âb33c´WõfÇVRÂb33c´WõG&ÓÂb33c´WõG&Ó"Âb33c´WõG&Ó2Âb33c´WõG&Ó@ b33c´FFGUô6V6³ÒuT7G&Å&VBb33c´FV6ÖÅõ&Fò b33c´FFGUô6V6³"ÒuT7G&Å&VBb33cµFWEõ&Fò bb33c´FFGUô6V6³Òb33c´uTô4T4´TBFVà b33c´WõfÇVRÒWb33c´FFô6öçfW'Fær³#3CScs¢b33c´WõG&ÓÒ7G&æuG&Õ&vBb33c´WõfÇVRÂb³ ¢b33c´WõG&Ó"Ò7G&æuG&Õ&vB7G&æuG&ÔÆVgBb33c´WõfÇVRÃ"ÃB³3@¢b33c´WõG&Ó2Ò7G&æuG&Õ&vB7G&æuG&ÔÆVgBb33c´WõfÇVRÃBÃ"³S` b33c´WõG&ÓBÒ7G&æuG&ÔÆVgBb33c´WõfÇVRÃb³s &WGW&âb33c´WõG&ÓBfײb33c´WõG&Ó2fײb33c´WõG&Ó"fײb33c´WõG&Ó³sSc3C VÇ6Tbb33c´FFGUô6V6³"Òb33c´uTô4T4´TBFVà &WGW&âW7G&æuFô&æ'b33c´FFô6öçfW'Fær VæD`¤VæDgVæ0 ¤gVæ2÷Vå&ö6W72¶FöæP uT6WE7FFR5uôD4$ÄRÂb33c´wVôf÷&Ó b33c´wVôf÷&Ó"ÒuT7&VFRgV÷Cµ6VÆV7B&ö6W72gV÷C²ÂRÂ#bÂ#Â#rÂ&Dõ"b33cµu5õ54ÔTåRÂb33cµu5ô4DôâÂb33cµu5õõUÂb33cµu5õõUtäDõrÂb33cµu5ô$õ$DU"Âb33cµu5ô4Ä4$Ääu2 b33c´wV%ôÆ7BÒuT7G&Ä7&VFTÆ7BgV÷C²gV÷C²ÂÂÂÂsR b33c´wV%ô÷Våô'WGFöâÒuT7G&Ä7&VFT'WGFöâgV÷C´÷VâgV÷C²ÂSÂÂsRÂ# uT6WE7FFR5uõ4õr ¢b33c´wV%õ&ö6W74Æ7BÒ&ö6W74Æ7B¢b33c´wV%õ7G&æuõ&ö6W74Æ7BÒb33c´wV%õ&ö6W74Æ7E³Õ³Ð¢f÷"b33cµG&vvW"Ò"Fòb33c´wV%õ&ö6W74Æ7E³Õ³Ð¢b33c´wV%õ7G&æuõ&ö6W74Æ7BÒb33c´wV%õ7G&æuõ&ö6W74Æ7Bfײb33·Âb33²fײb33c´wV%õ&ö6W74Æ7E²b33cµG&vvW%ճТæW@ ¢wV7G&Å6WDFFb33c´wV%ôÆ7BÂb33c´wV%õ7G&æuõ&ö6W74Æ7B vÆR b33c´×6s"ÒuTvWD×6r 7vF6b33c´×6s 66Rb33c´uTôUdTåEô4Äõ4R uTFVÆWFRb33c´wVôf÷&Ó" uT6WE7FFR5uôTä$ÄRÂb33c´wVôf÷&Ó vä7FfFRb33c´wVôf÷&Ó WDÆö÷ 66Rb33c´wV%ô÷Våô'WGFöâ b33cµ6VÆV7FVEõ&ö6W72ÒuT7G&Å&VBb33c´wV%ôÆ7B b33cµ&ö6W74æFÆRÒôÖVÖ÷'÷Vâ&ö6W74W7G2b33cµ6VÆV7FVEõ&ö6W72 vå6WEFFÆRb33c´wVôf÷&ÓÂgV÷C²gV÷C²ÂgV÷C´×"â6V&6gV÷C²fײb33cµ6VÆV7FVEõ&ö6W72fײgV÷C²gV÷C² uT7G&Å6WDFFb33cµ6V&6ôÆ&VÂÂgV÷C´GF6VBgV÷C² uTFVÆWFRb33c´wVôf÷&Ó" uT6WE7FFR5uôTä$ÄRÂb33c´wVôf÷&Ó vä7FfFRb33c´wVôf÷&Ó WDÆö÷ VæE7vF6 tVæ@¤VæDgVæ0 ¤gVæ2&W6WDwV¶FöæP uT7G&Å6WE7FFRb33cµ6V&6ô'WGFöâÂb33c´uTõ6÷r uT7G&Å6WE7FFRb33cµ&VfæUô'WGFöâÂb33c´uTôDR uT7G&Å6WE7FFRb33c´6æ6VÅô'WGFöâÂb33c´uTôDR uT7G&Å6WDFFb33cµ6V&6ôÆ&VÂÂgV÷C´GF6VBgV÷C² uT7G&Å6WDFFb33cµ&öw&W74&" ôuT7G&ÄÆ7EfWuôFVÆWFTÆÄFV×2uT7G&ÄvWDæFÆRb33cµ&WGW&åôÆ7EfWr¤VæDgVæ0 ¤gVæ26V&6FFb33c´FF¶Fæ²æVVG2Ö÷&Rv÷&° b33c¶âÒ b33c¶ã"Ò ôuT7G&ÄÆ7EfWuô&VvåWFFRb33cµ&WGW&åôÆ7EfWr Fð b33c¶âÒb33c¶â² b33c´ÖVÖ÷'õ&VBÒôÖVÖ÷'&VBb33cµfÆDÖVÖ÷'²b33c¶åÕ³ÒÂb33cµ&ö6W74æFÆRÂb33¶'FU²b33²fײb33cµfÆDÖVÖ÷'²b33c¶åÕ³Òfײb33µÒb33²·&VG2'FW2 b33cµ7G&æuôÆVæwFÒ7G&ætÆVâgV÷C¶gV÷C² b33c¶Ò b33c·Ò vÆR b33c·6V&6Ò7G&ætå7G"b33c´ÖVÖ÷'õ&VBÂb33c´FFÂÂÂb33c¶ bb33c·6V&6fÇC²fwC²FVà b33c·Òb33c·² b33c¶FG&W75³ÒÒb33c·²6f÷Væ@ b33c¶FG&W75²b33c·ÒÒWb33cµfÆDÖVÖ÷'²b33c¶åÕ³Ò²b33c·6V&6Òó"Ó·7F÷&W2f÷VæBFG&W70 b33c¶Òb33c·6V&6²b33cµ7G&æuôÆVæwF²æWr7F'B÷67Föà uT7G&Ä7&VFTÆ7EfWtFVÒb33c¶FG&W75²b33c·ÒfײgV÷C·ÂgV÷C²fײb33cµ6V&6õfÇVRÂb33cµ&WGW&åôÆ7EfWr VÇ6P WDÆö÷ VæD` tVæ@ b33cµ&öw&W72Òb33cµfÆDÖVÖ÷'²b33c¶åÕ³ÒòC#Ccs#R¢# uT7G&Å6WDFFb33cµ&öw&W74&"Âb33cµ&öw&W72 VçFÂb33c¶âÒb33cµfÆDÖVÖ÷'³Õ³Ð ôuT7G&ÄÆ7EfWuôVæEWFFRb33cµ&WGW&åôÆ7EfWr¤VæDgVæ0 ¤gVæ2f'GVÅVW'¶gVæ7FöæÂ'WB&Ww&FV&ÆP Æö6Âb33cµ7F'DÖVÖ÷'Ò´FV2 Æö6Âb33c´VæDÖVÖ÷'ÒC#Ccs#R´FV2dddddddb Æö6Âb33c´FG&W72Âb33c´Æ7DFG&W72Âb33c¶âÒÂb33c´&6TFG&W72Âb33cµ&Vvöå6¦RÂb33cµ7FFP Æö6Âb33c´'VffW"ÒFÆÅ7G'V7D7&VFRb33¶Gv÷&C¶Gv÷&C¶Gv÷&C¶Gv÷&C¶Gv÷&C¶Gv÷&C¶Gv÷&Bb33² vÆR FÆÄ6ÆÂb33cµ&ö6W74æFÆU³ÒÂb33¶çBb33²Âb33µf'GVÅVW'Wb33²Âb33¶çBb33²Âb33cµ&ö6W74æFÆU³ÒÂb33¶çBb33²Âb33c´FG&W72Âb33·G"b33²ÂFÆÅ7G'V7DvWEG"b33c´'VffW"Âb33¶çBb33²ÂFÆÅ7G'V7DvWE6¦Rb33c´'VffW" b33c´&6TFG&W72Òb33³b33²fײWFÆÅ7G'V7DvWDFFb33c´'VffW"²² b33cµ&Vvöå6¦RÒFÆÅ7G'V7DvWDFFb33c´'VffW"ÂB b33cµ&÷FV7BÒWFÆÅ7G'V7DvWDFFb33c´'VffW"Âb b33c´Æ7DFG&W72Òb33c´FG&W70 b33c´FG&W72Òb33³b33²fײWb33c´&6TFG&W72²b33cµ&Vvöå6¦R bb33cµ&÷FV7BÒBFVâ²b6âb33·B&÷FV7FV@ b33c¶âÒb33c¶â² b33cµfÆDÖVÖ÷'²b33c¶åÕ³ÒÒb33c´&6TFG&W72¶FG&W70 b33cµfÆDÖVÖ÷'²b33c¶åÕ³ÒÒb33cµ&Vvöå6¦S²F7Fæ6Röbvöö@ b33cµfÆDÖVÖ÷'³Õ³ÒÒb33c¶à VæD` bb33c´&6TFG&W72fÇC²FVà b33c´&6TFG&W72Ò#CsC3cC²b33c´&6TFG&W72²#CsC3cC VæD` bb33c´&6TFG&W72²b33cµ&Vvöå6¦RfwC³Òb33c´VæDÖVÖ÷'FVà WDÆö÷ VæD` bb33c´FG&W72Òb33c´Æ7DFG&W72FVà WDÆö÷ VæD` tVæ@¤VæDgVæ Edited June 12, 2008 by UPSman2
Spiff59 Posted June 12, 2008 Posted June 12, 2008 This is not your first Rodeo I take it? You forgot to point out, that even though they are declared local vars (Inside the function) by autoit if not declared as global already, that it's still a good idea to declare them locally (as others may use Opt("MustDeclareVars", 1) at some time ...@12k posts, yeah... I had my awesome bot make all the posts for me so I could be ahead of Jos's count, if for some reason my post count is less than 10.8 in a day, it logins for me and post some random gibberish ... Not unlike this rambling I'm doing now.Funny I used to ride, but was replaced years ago by guys named Hadji from Bangalore. Am finding AutoIt a refreshing method of reawakening my dormant brain cells. So, if we're trimming every byte... Does x86 distinguish between signed and unsigned integers? Is "$x = +1" or "$x = $y + +1" (AutoIt does accept that syntax...) more efficient than the less-specific formats?
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