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 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More