Einzelnen Beitrag anzeigen

QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
2.046 Beiträge
 
Delphi 12 Athens
 
#16

AW: Ansi Encoding ohne Leerzeichen

  Alt 7. Aug 2017, 17:16
ich schreibe das jetzt alles so
Delphi-Quellcode:
      aText := Datetimetostr(now) + ' ' + aText + linefeed;
      aByteArr := TEncoding.Utf8.GetBytes(aText);
      //FStream.Write(aText[1], length(aText) * Sizeof(aText[1]) );
      FStream.WriteData(aByteArr, Length(aByteArr));
Datei wird wie folgt erzeugt, damit es passt
Delphi-Quellcode:
    if not TFile.Exists(fLogFile) then
    Begin
      FileOpenMode := fmCreate;
      fStream := TFileStream.create( self.fLogFile, FileOpenMode );
      Preambel := Tencoding.UTF8.GetPreamble;
      fStream.WriteData(Preambel,length(Preambel));
      fStream.free;
    End;
Ich öffne mehrere (wenige und kleine)Logfiles und hänge sie hintereinander in einen String.
  aText := aText + TFile.ReadAllText(flogfile,Tencoding.UTF8); Dann erzeuge ich aus dem String eine einzige Datei für ein Email Attchment.
Delphi-Quellcode:
function TLog.Internal_GetEmailFile: String;
var alogtext:String;
begin
  result := '';
  Internal_ReadFile(alogtext);
  alogtext := aLogtext.Replace(''+linefeed, ''+carriageReturn+''+linefeed, [rfReplaceAll] );//für Notepad.exe
  alogtext := alogtext.Replace(''#0,'',[rfReplaceAll]);//einfach zur sicherheit.
  if tFile.Exists(fEmailFile) then
    Tfile.Delete(fEmailFile);
  TFile.WriteAllText(femailfile,aLogText, TEncoding.UTF8 );//erzeugt eine UTF8 Preambel (BOM)
  result := femailfile;
end;
Diese Datei kann ich dann tatsächlich per notepad.exe öffnen.

Problem ist also gelöst..
und viel über kodierung und strings dabei gelernt.
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat