1

しばらくここに投稿する必要はありませんでしたが、ファイルストリームの実装に問題があります。文字列をファイル ストリームに書き込むと、結果のテキスト ファイルの各文字間に余分なスペースが挿入される

したがって、このメソッドを実行すると:

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

何か提案はありますか?どうもありがとう、ブライアン

4

1 に答える 1