不需要在这里留言一段时间,但是我在实现文件流时遇到问题。 当写一个字符串FILESTREAM时,resultnig文本文件具有运行此方法时插入每个字符之间带字符串的额外空格缓冲void类型转换隐式地在Filestream.WriteBuffer方法中
所以多余的空格:
Function TDBImportStructures.SaveIVDataToFile(const AMeasurementType: integer;
IVDataRecordList: TIV; ExportFileName, LogFileName: String;
var ProgressInfo: TProgressInfo): Boolean; // AM
var
TempString: unicodestring;
ExportLogfile, OutputFile: TFileStream;
begin
ExportLogfile := TFileStream.Create(LogFileName, fmCreate);
TempString :=
'FileUploadTimestamp, Filename, MeasurementTimestamp, SerialNumber, DeviceID, PVInstallID,'
+ #13#10;
ExportLogfile.WriteBuffer(TempString[1], Length(TempString) * SizeOf(Char));
ExportLogfile.Free;
OutputFile := TFileStream.Create(ExportFileName, fmCreate);
TempString :=
'measurementdatetime,closestfiveseconddatetime,closesttenminutedatetime,deviceid,'
+ 'measuredmoduletemperature,moduletemperature,isc,voc,ff,impp,vmpp,iscslope,vocslope,'
+ 'pvinstallid,numivpoints,errorcode' + #13#10;
OutputFile.WriteBuffer(TempString[1], Length(TempString) * SizeOf(Char));
OutputFile.Free;
end;
(这是一个精简的测试方法,只写标题)。对于“OUTPUTFILE”产生的CSV文件读取
“measuredmoduletempera TURE,等等写字板中查看时,而不是在Excel中,记事本等 我猜它的sizeof运算(char)的说法是错误的unicode上下文,但我不确定在这里插入什么是正确的。 的“ExportLogfile”似乎工作确定,但不是“OUTPUTFILE”
从我读过其它地方的写作以unicode这是问题&不写字板,看http://social.msdn.microsoft.com/Forums/en-US/7e040fd1-f399-4fb1-b700-9e7cc6117cc4/unicode-to-files-and-console-vs-notepad-wordpad-word-etc?forum=vcgeneral
任何建议人? 非常感谢,布赖恩
大卫,清晰和非常有帮助的答案一如既往,非常感谢,布赖恩 – SolarBrian 2014-09-30 10:16:24