しばらくここに投稿する必要はありませんでしたが、ファイルストリームの実装に問題があります。文字列をファイル ストリームに書き込むと、結果のテキスト ファイルの各文字間に余分なスペースが挿入される
したがって、このメソッドを実行すると:
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ファイル
'measuredmoduletemperature などは、ワードパッドで表示した場合は表示されますが、Excel やメモ帳などでは表示されません。Unicode コンテキストでは間違っている SizeOf(Char) ステートメントを推測していますが、何が正しいのかわかりませんここに挿入します。「ExportLogfile」は正常に機能しているようですが、「OutPutFile」は機能していません
私が他の場所で読んだことから、問題はワードパッドではなくユニコードで書かれていることです。 Unicode-to-files-and-console-vs-notepad-wordpad-word-etc?forum=vcgeneral
何か提案はありますか?どうもありがとう、ブライアン