Create Cleaned Up Version of a Plain Text File

// WriteStrippedDataToNewFile(refNum, pathName, origFileName, newFileName)
// Creates new file containing cleaned up contents of original file.
// The original file is assumed to be a plain text file.
// The following are removed from the data:
//  All control characters except for carriage-return (0x0D)
//  All characters with codes greater than 0x7F (characters not in standard ASCII set)
// If newFileName exists, it is overwritten.
Function WriteStrippedDataToNewFile(pathName, origFileName, newFileName)
    String pathName             // Symbolic path where new original file exists
    String origFileName             // Name of file containing original data
    String newFileName              // Name of new file into which clean data is written

    Variable refNum                         // RefNum of raw data file
    Open/R/P=$pathName refNum as origFileName
    if (strlen(S_fileName) == 0)
        return -1                           // Error or user canceled from open file dialog.
    endif

    FStatus refNum                          // Sets V_logEOF to number of bytes in file
    Variable numBytesInFile = V_logEOF
    Make/O/B/U/N=(numBytesInFile) tempRawData
    FBinRead refNum, tempRawData            // Load raw data
   
    Variable numBytesAvailableInCleanData = numBytesInFile
    Make/O/B/U/N=(numBytesAvailableInCleanData) tempCleanData
   
    Variable numCleanBytes = 0
    Variable ch
    Variable i
    for(i=0; i<numBytesInFile; i+=1)
        ch = tempRawData[i]
        if (ch<0x80 && (ch>=0x20 || ch==0x0D))
            tempCleanData[numCleanBytes] = ch
            numCleanBytes += 1
        endif  
    endfor
   
    DeletePoints numCleanBytes, numBytesAvailableInCleanData - numCleanBytes, tempCleanData
   
    // Write clean data out to new file
    Variable cleanRefNum
    Open/P=$pathName cleanRefNum as newFileName
    FBinWrite cleanRefNum, tempCleanData
    Close cleanRefNum
   
    KillWaves/Z tempRawData, tempCleanData

    return 0
End

Forum

Support

Gallery

Igor Pro 8

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More