Jump to content
Sign in to follow this  
kor

method to use for array value when unknown size?

Recommended Posts

I have a need to split apart a file path and look at the very last element. But I never know how big the array is going to be.

For instance, if I have a file path that looks like this

serversharefolderAfolderBfolderC

I need to look at the very last folder after the final "" (in this case, folderC)

But I could also have a file path that looks like

servershareFolderA

So regardless of how deep the file path goes, I always need to look at the last folder. I already know how to break apart the path, but not sure what method I would use to analyze the last folder when I don't know how deep the path could be.

Can anyone point me in the right direction?

Share this post


Link to post
Share on other sites

UBound()


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites

If you're using StringSplit, the resultant array's [0] index will show you how many total elements there are.

Quick and dirty example:

$sDir = "c:\Users\Hades\Desktop\Test\Test1\Test2"
Local $aArray = StringSplit($sDir, "\")
$x = $aArray[0]

ConsoleWrite($aArray[$x] & @CRLF)

Share this post


Link to post
Share on other sites

kor,

Use StringSplit with the count element and then use that count to index the final element: :)

#include <MsgBoxConstants.au3>

$sPath = "\\server\share\folderA\folderB\folderC"
$aSplit = StringSplit($sPath, "\")
MsgBox($MB_SYSTEMMODAL, "Final Folder", $aSplit[$aSplit[0]])

$sPath = "\\server\share\FolderA"
$aSplit = StringSplit($sPath, "\")
MsgBox($MB_SYSTEMMODAL, "Final Folder", $aSplit[$aSplit[0]]
Or use a RegEx: ;)

#include <MsgBoxConstants.au3>

$sPath = "\\server\share\folderA\folderB\folderC"
$sFinalFolder = StringRegExpReplace($sPath, "^.*\\(.*)$", "$1")
MsgBox($MB_SYSTEMMODAL, "Final Folder", $sFinalFolder)

$sPath = "\\server\share\FolderA"
$sFinalFolder = StringRegExpReplace($sPath, "^.*\\(.*)$", "$1")
MsgBox($MB_SYSTEMMODAL, "Final Folder", $sFinalFolder)
M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see 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

 

If you're using StringSplit, the resultant array's [0] index will show you how many total elements there are.

Quick and dirty example:

$sDir = "c:\Users\Hades\Desktop\Test\Test1\Test2"
Local $aArray = StringSplit($sDir, "\")
$x = $aArray[0]

ConsoleWrite($aArray[$x] & @CRLF)

Just curious, why do I have to turn $aArray[0] into a new variable $x ?

I've noticed that if I do ConsoleWrite($aArray[0]) I get a number, but when I do $aArray[$x] I get the value.

Why is that?

Edit: $aArray[$aArray[0]] also works, but just wondering why I need to nest the value.

Edited by kor

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  

×
×
  • Create New...