Ver Fonte

* Fix bug #32871

git-svn-id: trunk@37962 -
michael há 7 anos atrás
pai
commit
5c1df42fa4
2 ficheiros alterados com 10 adições e 7 exclusões
  1. 2 2
      rtl/objpas/classes/classesh.inc
  2. 8 5
      rtl/objpas/classes/stringl.inc

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

@@ -690,9 +690,9 @@ type
     procedure Insert(Index: Integer; const S: string); virtual; abstract;
     procedure InsertObject(Index: Integer; const S: string;
       AObject: TObject);
-    procedure LoadFromFile(const FileName: string); overload; virtual;
+    procedure LoadFromFile(const FileName: string; IgnoreEncoding : Boolean = True); overload; virtual;
     procedure LoadFromFile(const FileName: string; AEncoding: TEncoding); overload; virtual;
-    procedure LoadFromStream(Stream: TStream); overload; virtual;
+    procedure LoadFromStream(Stream: TStream; IgnoreEncoding : Boolean = True); overload; virtual;
     procedure LoadFromStream(Stream: TStream; AEncoding: TEncoding); overload; virtual;
     procedure Move(CurIndex, NewIndex: Integer); virtual;
     procedure SaveToFile(const FileName: string); overload; virtual;

+ 8 - 5
rtl/objpas/classes/stringl.inc

@@ -975,13 +975,13 @@ end;
 
 
 
-Procedure TStrings.LoadFromFile(const FileName: string);
+Procedure TStrings.LoadFromFile(const FileName: string; IgnoreEncoding : Boolean = True);
 Var
         TheStream : TFileStream;
 begin
   TheStream:=TFileStream.Create(FileName,fmOpenRead or fmShareDenyWrite);
   try
-    LoadFromStream(TheStream);
+    LoadFromStream(TheStream, IgnoreEncoding);
   finally
     TheStream.Free;
   end;
@@ -1001,9 +1001,7 @@ begin
   end;
 end;
 
-
-
-Procedure TStrings.LoadFromStream(Stream: TStream);
+Procedure TStrings.LoadFromStream(Stream: TStream; IgnoreEncoding : Boolean = True);
 {
    Borlands method is no good, since a pipe for
    instance doesn't have a size.
@@ -1019,6 +1017,11 @@ Var
   BufLen,
   I,BufDelta     : Longint;
 begin
+  if not IgnoreEncoding then
+    begin
+    LoadFromStream(Stream,Nil);
+    Exit;
+    end;
   // reread into a buffer
   beginupdate;
   try