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