mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-07 06:26:27 +02:00
parent
fde8697032
commit
a516b6fd74
@ -1083,21 +1083,22 @@ begin
|
|||||||
LoadFromStream(Stream,False);
|
LoadFromStream(Stream,False);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Const
|
||||||
|
LoadBufSize = 1024;
|
||||||
|
LoadMaxGrow = MaxInt Div 2;
|
||||||
|
|
||||||
Procedure TStrings.LoadFromStream(Stream: TStream; IgnoreEncoding : Boolean);
|
Procedure TStrings.LoadFromStream(Stream: TStream; IgnoreEncoding : Boolean);
|
||||||
{
|
{
|
||||||
Borlands method is no good, since a pipe for
|
Borlands method is no good, since a pipe for
|
||||||
instance doesn't have a size.
|
instance doesn't have a size.
|
||||||
So we must do it the hard way.
|
So we must do it the hard way.
|
||||||
}
|
}
|
||||||
Const
|
|
||||||
BufSize = 1024;
|
|
||||||
MaxGrow = 1 shl 29;
|
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Buffer : AnsiString;
|
Buffer : AnsiString;
|
||||||
BytesRead,
|
BufLen : SizeInt;
|
||||||
BufLen,
|
BytesRead, I, BufDelta : Longint;
|
||||||
I,BufDelta : SizeInt;
|
|
||||||
begin
|
begin
|
||||||
if not IgnoreEncoding then
|
if not IgnoreEncoding then
|
||||||
begin
|
begin
|
||||||
@ -1111,11 +1112,11 @@ begin
|
|||||||
BufLen:=0;
|
BufLen:=0;
|
||||||
I:=1;
|
I:=1;
|
||||||
Repeat
|
Repeat
|
||||||
BufDelta:=BufSize*I;
|
BufDelta:=LoadBufSize*I;
|
||||||
SetLength(Buffer,BufLen+BufDelta);
|
SetLength(Buffer,BufLen+BufDelta);
|
||||||
BytesRead:=Stream.Read(Buffer[BufLen+1],BufDelta);
|
BytesRead:=Stream.Read(Buffer[BufLen+1],BufDelta);
|
||||||
inc(BufLen,BufDelta);
|
inc(BufLen,BufDelta);
|
||||||
If I<MaxGrow then
|
If I<LoadMaxGrow then
|
||||||
I:=I shl 1;
|
I:=I shl 1;
|
||||||
Until BytesRead<>BufDelta;
|
Until BytesRead<>BufDelta;
|
||||||
SetLength(Buffer, BufLen-BufDelta+BytesRead);
|
SetLength(Buffer, BufLen-BufDelta+BytesRead);
|
||||||
@ -1133,17 +1134,13 @@ Procedure TStrings.LoadFromStream(Stream: TStream; AEncoding: TEncoding);
|
|||||||
instance doesn't have a size.
|
instance doesn't have a size.
|
||||||
So we must do it the hard way.
|
So we must do it the hard way.
|
||||||
}
|
}
|
||||||
Const
|
|
||||||
BufSize = 1024;
|
|
||||||
MaxGrow = 1 shl 29;
|
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Buffer : TBytes;
|
Buffer : TBytes;
|
||||||
T : string;
|
T : string;
|
||||||
BytesRead,
|
BufLen : SizeInt;
|
||||||
BufLen,
|
BytesRead, I, BufDelta, PreambleLength : Longint;
|
||||||
I,BufDelta: SizeInt;
|
|
||||||
PreambleLength : Longint;
|
|
||||||
begin
|
begin
|
||||||
// reread into a buffer
|
// reread into a buffer
|
||||||
beginupdate;
|
beginupdate;
|
||||||
@ -1152,11 +1149,11 @@ begin
|
|||||||
BufLen:=0;
|
BufLen:=0;
|
||||||
I:=1;
|
I:=1;
|
||||||
Repeat
|
Repeat
|
||||||
BufDelta:=BufSize*I;
|
BufDelta:=LoadBufSize*I;
|
||||||
SetLength(Buffer,BufLen+BufDelta);
|
SetLength(Buffer,BufLen+BufDelta);
|
||||||
BytesRead:=Stream.Read(Buffer[BufLen],BufDelta);
|
BytesRead:=Stream.Read(Buffer[BufLen],BufDelta);
|
||||||
inc(BufLen,BufDelta);
|
inc(BufLen,BufDelta);
|
||||||
If I<MaxGrow then
|
If I<LoadMaxGrow then
|
||||||
I:=I shl 1;
|
I:=I shl 1;
|
||||||
Until BytesRead<>BufDelta;
|
Until BytesRead<>BufDelta;
|
||||||
SetLength(Buffer,BufLen-BufDelta+BytesRead);
|
SetLength(Buffer,BufLen-BufDelta+BytesRead);
|
||||||
|
Loading…
Reference in New Issue
Block a user