 MariaEsmeral
		
			MariaEsmeral
		
		
		
		
		
		
		
		
	
			06-17-2016 09:25 AM
Dear,
I am having problems using global arrays
 If UBound(index) <> 0 then
    For j = 0 to (UBound (index))
      nDiff = (index2(j)*nDelT)-(index(j)*nDelT)
      If nDiff >= 7 then
        GlobalReDim "Preserve ind_1_5(j)" : ind_1_5(j) = index(j) +(1.5/nDelT)
        GlobalReDim "Preserve ind_5(j)": ind_5(j) = index(j) +(5/nDelT)
        GlobalReDim "Preserve ind_7(j)":  ind_7(j) = index(j) +(7/nDelT)
      End If
      If nDiff <7 and nDiff >= 5  then
        GlobalReDim "Preserve ind_1_5(j)" : MsgBox (Ubound(ind_1_5) & " y " & j)
        ind_1_5(j) = index(j) +(1.5/nDelT)
        GlobalReDim "Preserve ind_5(j)": ind_5(j) = index(j) +(5/nDelT)
        GlobalReDim "Preserve ind_7(j)" :  ind_7(j) = -1
      End If
      If nDiff  >= 1.5 and nDiff <5 then
        GlobalReDim "Preserve ind_1_5(j)": ind_1_5(j)= index(j) +(1.5/nDelT)
        GlobalReDim "Preserve ind_5(j)": ind_5(j) = -1
        GlobalReDim "Preserve ind_7(j)" :  ind_7(j) = -1
      End If
      If nDiff < 1.5 then
        GlobalReDim"Preserve ind_1_5(j)" : ind_1_5(j)  = -1
        GlobalReDim"Preserve ind_5(j)" : ind_5(j) = -1
        GlobalReDim"Preserve ind_7(j)" : ind_7(j) = -1
      End If
    Next
  Else
      GlobalReDim (ind_1_5(0)) : ind_1_5(0)  = -1
      GlobalReDim(ind_5(0)) : ind_5(0) = -1
      GlobalReDim(ind_7(0)) : ind_7(0) = -1
  End If The command GlobalReDim "Preserve.... is not working... I dont know why it dont re dimension the arrays. I get to j =1, after asking to do the GlobalReDim ("Preserve") my Arrays should have new dimension but after I recieve a message "Subscript out of range: 'j' ", the message bos I locate in the code is to verify that case.
Any idea what I am doing wrong???
Solved! Go to Solution.
 Brad_Turpin
		
			Brad_Turpin
		
		
		
		
		
		
		
		
	
			06-20-2016 02:51 PM
Hi Maria,
I didn't spot a problem in your code, but it looks like you're doing an awful lot of redimensioning. Could you please describe what you're trying to accomplish? Also, when and how do these variables get created the first time?
Brad Turpin
DIAdem Product Support Engineer
National Instruments
06-21-2016 03:47 AM
Dear,
I am trying to find when some condition in a channel if happening, in this case that the value in my channel will be 100, if it happens for more than 7 seconds I want to keep the information of other channel just after those 7 seconds, but also after 5 and 1.5 seconds. If it only happend for a total time between 5 and 7 seconds, I want to have the information of the other channel at 5 and 1.5 seconds... so thats basically the idea.
Do 
      cnt = cnt + 1
      iInd = ChnFind ("Ch("""&str(Data.Root.ActiveChannelGroup.Name)&"/"& str(oAccel.Name) &""")="&str(nInd),iInd2+1)
      iInd2 = ChnFind ("Ch("""&str(Data.Root.ActiveChannelGroup.Name)&"/"& str(oAccel.Name) &""")<"&str(nInd),iInd+1)
      ReDim Preserve index(cnt-1) : index(cnt-1) = iInd
      ReDim Preserve index2(cnt-1) : index2(cnt-1) = iInd2
    Loop Until (iInd = 0)
  ReDim Preserve index(UBound(index)-1) 
  ReDim Preserve index2(UBound(index2)-1) 
  Dim nDelT : nDelT = oAccel.Properties("wf_increment").Value
  
  'Times
  GlobalDim ("ind_1_5()"):  GlobalDim ("ind_5()") : GlobalDim ("ind_7()") : Dim nDiffThats the fisrt part of the procedure...
Thank you for your answer
Best Regards
Maria
 Brad_Turpin
		
			Brad_Turpin
		
		
		
		
		
		
		
		
	
			06-21-2016 11:29 AM
Hi Maria,
If you have DIAdem 2014 or later I'd recommend using the ChnEvent...() functions to identify the regions of interest. These functions officially released in DIAdem 2015 with ANALYSIS dialogs and Help entries, but there is a slightly different version that shipped with DIAdem 2014 that was only available from a VBScript. What DIAdem version are you using?
What is the reason for storing your answers in global arrays as opposed to local VBScript arrays or new DIAdem channels? What do you want to do with those results after you discover them? Plot them? Analyze them? Save them back to a data file?
Brad Turpin
DIAdem Product Support Engineer
National Instruments
 Dan_Dud
		
			Dan_Dud
		
		
		
		
		
		
		
		
	
			12-13-2022 06:22 AM
Hi,
I have familiar problem like Maria was a few years ago.
I am trying to make dynamic array to print values at table but global function Call GlobalReDim ("Preserve Arr(index)") : Arr(index) = 0 do not work.
Down below you have the script code:
Dim i
GlobalDim "Arr" : Arr = Array()
For i=0 to 10
GlobalReDim "Preserve Arr(i)"
Arr(i) = 0
Next
12-14-2022 01:04 AM
Hi Dan-Dud,
Your loop variable needs to be interpreted. The correct code is as follows:
Dim i
If Not Iteminfoget("Arr") Then
  call GlobalDim("Arr()")
end if
For i=0 to 10
  call GlobalReDim("Preserve Arr(" & str(i) & ")")
  Arr(i) = i
Next
For i=0 to 10
  LogfileWrite Arr(i) 
Next
Greetings
Walter
 Dan_Dud
		
			Dan_Dud
		
		
		
		
		
		
		
		
	
			12-14-2022 07:03 AM
Thank you, now it works perfectly.