浏览代码

classes: add TStringsOption.soPreserveBOM

git-svn-id: trunk@43848 -
ondrej 5 年之前
父节点
当前提交
ee18a7ee9a
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 1 1
      rtl/objpas/classes/classesh.inc
  2. 4 0
      rtl/objpas/classes/stringl.inc

+ 1 - 1
rtl/objpas/classes/classesh.inc

@@ -610,7 +610,7 @@ type
   TStringsForEachMethod = procedure(const CurrentValue: string) of object;
   TStringsForEachMethod = procedure(const CurrentValue: string) of object;
   TMissingNameValueSeparatorAction = (mnvaValue,mnvaName,mnvaEmpty,mnvaError);
   TMissingNameValueSeparatorAction = (mnvaValue,mnvaName,mnvaEmpty,mnvaError);
   TMissingNameValueSeparatorActions = set of TMissingNameValueSeparatorAction;
   TMissingNameValueSeparatorActions = set of TMissingNameValueSeparatorAction;
-  TStringsOption = (soStrictDelimiter,soWriteBOM,soTrailingLineBreak,soUseLocale);
+  TStringsOption = (soStrictDelimiter,soWriteBOM,soTrailingLineBreak,soUseLocale,soPreserveBOM);
   TStringsOptions = set of TStringsOption;
   TStringsOptions = set of TStringsOption;
 
 
   TStrings = class(TPersistent)
   TStrings = class(TPersistent)

+ 4 - 0
rtl/objpas/classes/stringl.inc

@@ -1397,6 +1397,8 @@ begin
   finally
   finally
     EndUpdate;
     EndUpdate;
   end;
   end;
+  if soPreserveBOM in FOptions then
+    WriteBOM:=False;
 end;
 end;
 
 
 
 
@@ -1431,6 +1433,8 @@ begin
     SetLength(Buffer,BufLen-BufDelta+BytesRead);
     SetLength(Buffer,BufLen-BufDelta+BytesRead);
     PreambleLength:=TEncoding.GetBufferEncoding(Buffer,AEncoding,FDefaultEncoding);
     PreambleLength:=TEncoding.GetBufferEncoding(Buffer,AEncoding,FDefaultEncoding);
     T:=AEncoding.GetAnsiString(Buffer,PreambleLength,Length(Buffer)-PreambleLength);
     T:=AEncoding.GetAnsiString(Buffer,PreambleLength,Length(Buffer)-PreambleLength);
+    if soPreserveBOM in FOptions then
+      WriteBOM:=PreambleLength>0;
     SetEncoding(AEncoding);
     SetEncoding(AEncoding);
     SetLength(Buffer,0);
     SetLength(Buffer,0);
     SetTextStr(T);
     SetTextStr(T);