04-16-2015 12:08 PM
I am building an interface in which I would like the user to select the specific test which links to that tests folder. Once test folder is selected, I would like to load all tdms files in that folder. Is there a way to do this? The load data options in Diadem script seem to require the specific file names to load where I would just like to load all that is found in folder.
Thanks for any thoughts or suggestions.
BG103
04-16-2015 02:32 PM - edited 04-16-2015 02:33 PM
Hello BG103
I use "FileNameGet" Command. But the catch is you have to select multiple files manually ( Cntr+A for all files).
If (FileNameGet("ANY", "FileRead", DataReadPath, "TDMS data (*.tdms),*.tdms", "All.lst", True, "Data selection")= "IDOk") Then
 Call DataFileLoad(FileDlgFileName,"TDMS")
 End if
Try this
Thanks
Arun
04-17-2015 12:58 AM
Hi,
i think that selecting the folder and automatically load the contained files is the better way:
'Simple way
Call PathNameGet("Select measurement folder", DataReadPath)
If (DlgState = "IDOk") Then
    DataReadPath = OutPutPath
    vValues = DirListGet(DataReadPath, "*.*", "filename", "FullFilenames")
    For iCount = LBound(vValues) To UBound(vValues)
      Call DataFileLoad(vValues(iCount))
    Next
End If
'more complicated way, but here you can select multiple file extensions
'Constant for defining the loadable file extensions
Const FILEDATA = "*.tdm|*.dat"
'Select folder
Call PathNameGet("Select measurement folder", DataReadPath)
If (DlgState = "IDOk") Then
    DataReadPath = OutPutPath
    vValues = getRawData(DataReadPath, FILEDATA, "", "")
    For iCount = LBound(vValues) To UBound(vValues)
      Call DataFileLoad(vValues(iCount))
    Next
End If
'Functions for getting the files
Function getRawData(dataPath, dataName, sortType, lstFilter)
Dim mySrtType   : mySrtType   = "filename"
Dim myLstFilter : myLstFilter = "FullFileNames"
Dim vDataName, vFileData, vTemp
Dim i, j, k
  If (sortType <> "") Then
    mySrtType = sortType
  End If
  If (lstFilter <> "") Then
    myLstFilter = lstFilter
  End If
  k = 0
  Set vFileData = CreateObject("Scripting.Dictionary")
  
  vDataName = Split(dataName, "|")
  If IsArray(vDataName) Then
    For i = LBound(vDataName) To UBound(vDataName)
      vTemp = DirListGet(dataPath, vDataName(i), mySrtType, myLstFilter)
      If IsArray(vTemp) Then
        For j = LBound(vTemp) To UBound(vTemp)
          ' has to be checkt because DirListGet gets with Filter *.tdm also tdms
          ' and tdms_index data
          If (getFileType(vTemp(j)) = getFileType(vDataName(i))) Then
            Call vFileData.Add(k, vTemp(j))
            k = k + 1
          End If
        Next
      End If
    Next
  End If
  If (vFileData.Count > 0) Then
    getRawData = vFileData.Items
  Else
    getRawData = EMPTY
  End If
End Function
Function getFileType(sFile)
  If (InStrRev(sFile, ".") <> 0 AND Len(sFile) > 0) Then
    getFileType = UCase(Right(sFile, Len(sFile) - InStrRev(sFile, ".")))
  Else
    getFileType = ""
  End If
End Function
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		04-17-2015 08:34 AM
Thank you kindly both for your responses. They have each helped me!