
ReadTextFile - Shows how to read lines of text from a text file using FReadLine


hrodstein
// ReadTextFile(pathName, filePath, outputWaveName, maxNumberOfLines) // Reads all of the lines of text from the file into a new text wave. // Returns 0 if OK or a non-zero error code. // Read the comments for details. Function ReadTextFile(pathName, filePath, outputWaveName, maxNumberOfLines) String pathName // Symbolic path name or "" if filePath is full path. Can also be "" if filePath is "" to get Open File dialog. String filePath // File name, partial path or full path or "" to get Open File dialog. String outputWaveName // NOTE: Overwrites existing wave, if any! Variable maxNumberOfLines // Maximum expected number of lines in file. Variable refNum Variable err = 0 if (strlen(filePath) == 0) // Want Open File dialog? Open/D/R/P=$pathName refNum as filePath if (strlen(S_fileName) == 0) return -1 // User canceled. endif filePath = S_fileName // This is a full path. endif Open/R/P=$pathName refNum as filePath if (GetRTError(1)) return -2 // Error. Probably file does not exist. endif Make/O/T/N=(maxNumberOfLines) $outputWaveName if (GetRTError(1)) Close refNum return -3 // Error. Probably there is already a numeric wave with this name. endif Wave/T tw = $outputWaveName Variable row for(row=0; row<maxNumberOfLines+1; row+=1) String data FReadLine refNum, data // Terminates on CR, LF or CRLF. if (strlen(data) == 0) break // All done. endif if (row == maxNumberOfLines) err = -4 // Error. File had more rows than specified maximum. break endif tw[row] = data endfor Close refNum Redimension/N=(row) tw return err // 0=success End

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More