Jump to content
Sign in to follow this  
matwachich

[UDF] Fixed Id's Array

Recommended Posts

matwachich

Hello everybody! Here i am with a new, small but usefull UDF.

This UDF is for managing 'special' Arrays:

When adding elements, then deleting elements in the middle, then the last elements's ID are not changed, i mean they are not shifted

You will ask: Why!?

For example: You are managing a TreeView in your program, and you want to associate some data (other than simple numbers, like file paths ...) with the TreeViewItem.

I don't know any function to do that, but all you can do, is associate a simple number with a TreeViewItem (_GuiCtrlTreeView_SetItemParam).

So, you store the data in a simple array, and the id of the data in the array is associated with the TreeViewItem

But there is a problem: when you delete an item, and the array element associated with it, other elements in the array are shifted, and their ID in the array is changed! So, the IDs associated with the TreeViewItem becomes invalid!

But, when using this UDF, you will not have this problem!

Here is the functions list (with calltips)

_FixArray_Create( [ iUBound ] ) Create a Fixed id's Array (required: #include "FixArray.au3")
_FixArray_Destroy( aArray ) Destroy a Fixed id's Array (required: #include "FixArray.au3")
_FixArray_Add( aArray , aValues ) Add a value, or values to a Fixed ID's Array (required: #include "FixArray.au3")
_FixArray_Set( aArray , iId , vNewData , [ iSubItem = 0 ] ) Modify an element's value (required: #include "FixArray.au3")
_FixArray_Get( aArray, iId ) Get the value(s) contained in the Fixed id's Array element Id (required: #include "FixArray.au3")
_FixArray_Del( aArray, iId ) Delete an element of the Fixed id's Array (required: #include "FixArray.au3")
_FixArray_Empty( aArray ) Delete all items in a Fixed id's Array (required: #include "FixArray.au3")
_FixArray_UBound( aArray , [ iOnlyValides ] ) Return the number of elements in the Fixed id's Array (required: #include "FixArray.au3")
_FixArray_IsValid( aArray , iId ) Check an element's validity (have it been deleted) (required: #include "FixArray.au3")

Any comments and suggestions are welcome!!!

PS: this is the only example i have, because it's what i did in my Scite Project Manager (still in developpement)

UDF_FixArray.zip

Important: the guy who downloaded the first archive should redownload, cause i made a mistake and uploaded an outdated version.

Edited by matwachich

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  

  • Similar Content

    • MrCheese
      By MrCheese
      hi all,
      reviewing the forum, this thread is applicable: 
       
       
      I wanted to know if there is now a better way to do this?
      In essence, I load a tab delimited txt file into an array (works well). I used tab, as some fields in the original csv contains commas.
      However, I needed autoit to manipulate this array, and output it as a csv.
      IF my array contains items with a comma, without double quotes around the field, then how best do I get a csv out of this?
      My current workaround is to filewritefromarray tab delimited, then open it in excel and save as a csv. I will need to check this to see how the address fields behave that contain a comma.
       
      Any thoughts would be appreciated.
       
    • caramen
      By caramen
      I watched _OL_ItemSend&_OL_ItemFind&_OL_ItemCreate in OutlookEx UDF but hmmm
       
      Since it use the test environnement i cant get the orders of the mail creation
       
      Can someone make me win some time of reading all exemples script and lead me how to do one ?
      That whould be lovely.
      Gnight
    • Skeletor
      By Skeletor
      Hi All,

      I would like to know how you would take a FileLineRead and insert it into an array which then inserts it into Excel?
      One thing to know is the files content is broken up, so I only use half of the content within $FileRead1.
      So its imperative that the $value1, $value2, etc variables be used. 
      Code below:
      $FileRead1 = FileReadLine("C:\temp\sample.txt",1) For $count = 1 To _FileCountLines($FileRead1) Step 1 $string = FileReadLine($FileRead1, $count) $input = StringSplit($string, ",", 1) $value1 = $input[1] $value2 = $input[2] $value3 = $input[3] $value4 = $input[4] _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value1, "A1") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value2, "B1") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value3, "C1") _Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $value4, "D1") Next  
    • AnonymousX
      By AnonymousX
      Hello,
      I'm trying to write a script that moves copies excel cells into an array. I'll than manipulate the values and send array into another program. 
      I don't want range to be specific to a workbook, or sheet, or set of cells.
      I want user to be able to highlight desired cells and to copy either normally ("Ctrl+C") or by a hotkey ("Alt+C"). 
      Could someone help me with this?
      Thank you,
      I've tried to write the framework: (edited)
      #include <MsgBoxConstants.au3> #include <Array.au3> #include <Excel.au3> HotKeySet("!v", "Pastedata") While True Sleep(1000) WEnd func Makearray() local $bArray ;User has cells already copied ;Convert clipboard into an array ;I don;t know how excel stores data to clipboard so don;t know how to bring it into array _Arraydisplay($bArray) MsgBox(0,0,$bArray) return $bArray endfunc func Pastedata() Local $aArray MsgBox(0,0,"wait",1) ;make array based on assumption user has already copied a range to clipboard $aArray = Makearray() ;paste code ;don;t worry about this I got the rest endfunc  
    • Tersion
      By Tersion
      Here the this wiki page with list of available UDFs for data compression. For my tasks I only need ZIP support, so I started looking at pure AutoIt UDFs without any 3rd party dlls. And found out that most of available realizations uses standard ("native method") Windows dll - "zipfldr.dll". So for now I chose ZIP UDF by wraithdu. I've tested it on Windows 7 (x64) and it seem works fine. But here the comment from another topic where user says that Windows 10 discontinued support of "zipfldr.dll". Now I confused. I don't have around any Windows 10 machine to tested it. So maybe someone could confirm or deny that? Or maybe would better to switch to UDF with 7zip dll?
      I need an advice...
×