Jump to content

Recommended Posts

Posted (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 by UPSman2
Posted

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
Posted

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.

Posted

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
Posted

StringInStr + Start Pos param is slower than stringsplit

Yeah, 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.

Posted (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 by Spiff59
  • Moderators
Posted (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 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.

Posted (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 by Spiff59
  • Moderators
Posted

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 :P ...

@12k posts, yeah... I had my awesome bot :P 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.

Posted (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...

#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 by UPSman2
Posted

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 :P ...

@12k posts, yeah... I had my awesome bot :D 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 :P

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?

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...