Sign in to follow this  
Followers 0
Javik

Access array data from command output, without a variable?

8 posts in this topic

Is there some way to directly access array data that is output from a command without storing that data into an array datatype first?

Basically, the command normally outputs data in array format, and I only need a single cell's worth of data from its output, and the rest can be discarded immediately after grabbing what I need.

Normal:

#Include <File.au3>
Local $Foo = _FileListToArray( "C:\" )
ConsoleWrite ($Foo[1] & @CRLF)

Arrayless?

#Include <File.au3>
ConsoleWrite (_FileListToArray( "C:\" )[1] & @CRLF)

Error: Syntax error

Share this post


Link to post
Share on other sites



javik,

No. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

It just looks so.... unoptimized like that, though. :)

; Get user's properties from Active Directory
    Local $ADGOPTmp
    $ADGOPTmp = _AD_GetObjectProperties(@UserName,"givenName")
    Local $FirstName = $ADGOPTmp[1][1]
    $ADGOPTmp = _AD_GetObjectProperties(@UserName,"sn")
    Local $LastName = $ADGOPTmp[1][1]
    $ADGOPTmp = _AD_GetObjectProperties(@UserName,"homedirectory")
    Local $HomePath = $ADGOPTmp[1][1]
    $ADGOPTmp = _AD_GetObjectProperties(@UserName,"profilepath")
    Local $ProfilePath = $ADGOPTmp[1][1]

Share this post


Link to post
Share on other sites

javik,

Arrays are not one of AutoIt's strengths. ;)

But you could always write a small wrapper function like this (untested): ;)

; Get user's properties from Active Directory
Local $FirstName = _GetProps(@UserName, "givenName")
Local $LastName =  _GetProps(@UserName, "sn")
Local $HomePath =  _GetProps(@UserName, "homedirectory")
Local $ProfilePath =  _GetProps(@UserName, "profilepath")

Func _GetProps($sUserName, $sProperty)
    Local $ADGOPTmp = _AD_GetObjectProperties($sUserName, $sProperty)
    Return $ADGOPTmp[1][1]
EndFunc

Looks a bit more elegant that way. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

The type of side effect you want where a temporary is created on assignment or as a result of a constructor is common to c++ type OOP languages. In scripting it's more of a C# thing.

In c/c++ circles those things are cool. In some other languages they are considered bugs waiting to surface. :)

But for c based it's really designed from the beginning. while(c = *p++) the while evaluates the side effect of the assignment to 'c' to see if it's a zero/NULL whatever, to stop the loop.

Edited by MilesAhead

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

Use

; Get user's attributes from Active Directory
Local $FirstName = _AD_GetObjectAttribute(@UserName,"givenName")
Local $LastName = _AD_GetObjectAttribute(@UserName,"sn")
Local $HomePath = _AD_GetObjectAttrbibute(@UserName,"homedirectory")
Local $ProfilePath = _AD_GetObjectAttribute(@UserName,"profilepath")

_AD_GetObjectAttribute only returns a single attribute and does note "decode" data (e.g. convert date into a readable form).

Edited by water

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

And if you want/need to stick with _AD_GetObjectProperties then use:

; Get user's properties from Active Directory
Local $ADGOPTmp
$ADGOPTmp = _AD_GetObjectProperties(@UserName,"givenName,homedirectory,profilepath,sn")
Local $FirstName = $ADGOPTmp[1][1]
Local $LastName = $ADGOPTmp[4][1]
Local $HomePath = $ADGOPTmp[2][1]
Local $ProfilePath = $ADGOPTmp[3][1]

My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

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