Lars Gehre wrote:
>> Lars Gehre wrote:
>>> I believe all versions of ICS have these problems (at least with
>>> Delphi 7 but I don't think integer or longword are suddenly
>> Int64 in
>>> newer delphi versions).
>> 
>> It seems that ICSv6 and v7 both support Int64:
>> 
>> {$IFDEF UseInt64ForHttpRange}
>>     THttpRangeInt        = Int64;
>> {$ELSE}
>>     THttpRangeInt        = LongInt;   { Limited to 2GB size }
>> {$ENDIF}
>> 
>> If you use Delphi 7 you upgrade to ICSv6 or even ICSv7.
> 
> 
> V5 does support it also. That's why I wrote THttpRangeInt. :)
> The problems still exists because integer and THttpRangeInt are
> constantly mixed, as I wrote. At least in V7 Code the same routines
> are used and will also cause the described problems.

You are right, I assumed that this stuff just works, however v6 and v7
include the same bugs. THttpRangeInt is also used where it should be a 
Longint. Also define UseInt64ForHttpRange should be replaced by STREAM64
since without STREAM64 being defined it won't work. I also found another
bug, see my other mail.

--
Arno Garrels
 

> 
> I tried V6, but it does not work very well with continous streams, so
> I will stick with V5, which has proven over the last three years to
> be extremly stable in streaming.
> 
> Lars
> 
> 
>> 
>> --
>> Arno Garrels [TeamICS]
>> http://www.overbyte.be/eng/overbyte/teamics.html
>> 
>> 
>>> 
>>> The following routines have problems:
>>> 
>>> - THttpRangeStream.AddPartStream(Value: TStream; AStartPos, AEndPos:
>>> Integer);
>>>  Integer should be THttpRangeInt
>>> 
>>> - THttpRangeStream.Read(var Buffer; Count: Longint):
>> Integer;  Result
>>> := FSize - FPosition; // don't -> Overflow, use seperate
>> Variable ->
>>> THttpRangeInt
>>> 
>>>  ActSize := min(Count - DataRead,  Rec.Size - (ActOffset));
>> //Overflow
>>> because min only handles Integer.
>>> 
>>> - THttpConnection.ConnectionDataSent(Sender : TObject;
>> Error : WORD);
>>> var
>>>    Count  : Integer;
>>>    ToSend : Integer;  // Overflow in both use THttpRangeInt instead.
>>> 
>>> 
>>> - procedure ParseRangeString(var FromStr : String; var ToStr   :
>>> String; const Value : String);
>>>  Don't use StrToInt, Use StrToInt64
>>> 
>>> - THttpRangeList.InitFromString(AStr: String);  Don't use StrToInt,
>>> Use StrToInt64
>>> 
>>> After these corrections, ICS works flawless, even jumping
>> around in a
>>> 16 GB HDTV Recording works without glitches. I simply love ICS! ;)
>>> 
>>> Greetings
>>> Lars
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to