Text wave Issue

Hello, I am trying to assign text from one wave to another, that is, I have a text wave, w1, and I am trying to assign its elements to another wave, w2, but I receive the error "a wave assignment error: "An attempt was made to treat a text wave as if it were a numeric wave."" I've tried a simplified version of what I am attempting to do:

Function Example()

Variable i

Make/T/O w1= {"a","b","c"}
Make/T/O w2

For (i=0; i<numPnts(w1); i+=1)
					
	w2[i] = w1[i]
					
EndFor

End
And this work exactly how I would have expected it to. Any suggestions?
Hi, I ran your example as posted and it worked without issue. Created 2 text waves W1 of length 3 points and W2 of 128 with a,b, and c in the right spot. Tried on IP8. Can you supply the non-simplified code? Andy
Yes, that example does work exactly how you would expect it to. I have a chunk of my code pasted below. It is just a snippet of the larger procedure I am working on but this section is essentially merging data, under three different conditions, inserting the data into different parts of an already existing waves. I am receiving the error for the line:

Stats_StatusFlag[FirstPoint + i] = Load_Stats_StatusFlag0[i]

These two waves are both text waves. Also, I am using Igor Pro 6.3.7.2.

        Wave EndTime, Stats_StatusFlag, Stats_Median_nm, Final_SMPS_Data
        
        
        For (i=0; i<numPnts(EndTime); i+=1)                                         
                                                                                
            If (EndTime[i] >= Load_EndTime[0])
                
                FirstPoint = i                                                      
                Break                                                           
                
            EndIf       
                
        EndFor
 
 
        For (i=0; i<numPnts(Load_EndTime); i+=1)                                    
        
            If (EndTime[FirstPoint + i] > Load_EndTime[i])                              
            
                InsertPoints FirstPoint + i, 1, EndTime                                 
                EndTime[FirstPoint + i] = Load_EndTime[i]
                InsertPoints FirstPoint + i, 1, Stats_StatusFlag
                Stats_StatusFlag[FirstPoint + i] = Load_Stats_StatusFlag0[i]
                InsertPoints FirstPoint + i,1,Stats_Median_nm
                Stats_Median_nm[FirstPoint + i] = Load_Stats_Median_nm0[i]
                InsertPoints FirstPoint + i,1,Final_SMPS_Data
                
                    For (j=0; j<54; j+=1)
                    
                        Final_SMPS_Data[FirstPoint + i][j] = Sorted_SMPS_Data[i][j]
                    
                    EndFor
                
            ElseIF (EndTime[FirstPoint + i] == Load_EndTime[i])
            
                        
                If (V_Flag == 0)
                
                    DoAlert /T="Data Already Loaded",1,"Data already loaded for this time period, would you like to overwrite the current data?"
                                
                ElseIf (V_Flag ==1)
            
                    EndTime[FirstPoint + i] = Load_EndTime[i]                           
                    Stats_StatusFlag[FirstPoint + i] = Load_Stats_StatusFlag0[i]
                    Stats_Median_nm[FirstPoint + i] = Load_Stats_Median_nm0[i]
                
                    For (j=0; j<54; j+=1)
                    
                        Final_SMPS_Data[FirstPoint + i][j] = Sorted_SMPS_Data[i][j]
                    
                    EndFor
                    
                            
                EndIf
            
            Else
            
                For (i=0; i<numPnts(Load_EndTime);i+=1)                             
                                                                                
                    InsertPoints numPnts(EndTime), 1, EndTime
                    EndTime[numPnts(EndTime) - 1] = Load_EndTime[i]
                    InsertPoints numPnts(EndTime), 1, Stats_StatusFlag
                    Stats_StatusFlag[numPnts(EndTime) - 1] = Load_Stats_StatusFlag0[i]
                    InsertPoints numPnts(EndTime), 1, Stats_Median_nm
                    Stats_Median_nm[numPnts(EndTime) - 1] = Load_Stats_Median_nm0[i]
                    InsertPoints numPnts(EndTime), 1, Final_SMPS_Data
                    
                    For (j=0; j<54; j+=1)
                    
                        Final_SMPS_Data[numPnts(EndTime) - 1][j] = Sorted_SMPS_Data[i][j]
                    
                    EndFor
                    
                EndFor
            
            EndIf
            
        
        EndFor
If you create a wave reference pointing to a text wave, you need to use the /T flag so that the Igor compiler knows it is a text wave. For example:
Function Test()
    // Make with a simple name - Creates an automatic wave reference named textwave0
    Make/O/T textwave0
    Wave/T textwave0    // This is redundant - Make already creates the wave reference
 
    // Make without a simple name - no automatic wave reference is created
    String name = "textwave1"
    Make/O/T/N=3 $name = "Hello"
    Wave/T tw1 = $name      // This is required because no automatic wave reference is created
 
    // Reference to a text wave named textwave2 that is assumed to already exist in the current data folder
    Wave/T tw2 = textwave2
End
I recommend rereading this section of the help. It takes both experimentation and rereading before if all sinks in.
DisplayHelpTopic "Wave References"
Ahh, ok, haven't had much experience with text waves, works perfectly now. Much appreciated.