DataStream updated
This commit is contained in:
@@ -86,17 +86,12 @@ begin
|
||||
var newValue := AValue.GetValue;
|
||||
var scaleDiff := ANewScale - oldScale;
|
||||
|
||||
if scaleDiff > 0 then
|
||||
if (scaleDiff > 0) then
|
||||
begin
|
||||
// Increasing scale: multiply by 10^scaleDiff, checking for overflow at each step.
|
||||
for var i := 1 to scaleDiff do
|
||||
begin
|
||||
if newValue > (MAX_VALUE_61BIT div 10) then
|
||||
raise EOverflow.Create('Decimal scale up resulted in an overflow.');
|
||||
if newValue < (MIN_VALUE_61BIT div 10) then
|
||||
raise EOverflow.Create('Decimal scale up resulted in an overflow.');
|
||||
newValue := newValue * 10;
|
||||
end;
|
||||
var multiplier := PowersOf10[scaleDiff];
|
||||
if (newValue > (MAX_VALUE_61BIT div multiplier)) or (newValue < (MIN_VALUE_61BIT div multiplier)) then
|
||||
raise EOverflow.Create('Decimal scale up resulted in an overflow.');
|
||||
newValue := newValue * multiplier;
|
||||
end
|
||||
else
|
||||
begin
|
||||
@@ -380,7 +375,7 @@ begin
|
||||
if val < 0 then
|
||||
exit(-1);
|
||||
if val > 0 then
|
||||
exit(-1);
|
||||
exit(1);
|
||||
exit(0);
|
||||
end;
|
||||
|
||||
|
||||
@@ -7,16 +7,18 @@ uses
|
||||
Myc.Mutable,
|
||||
Myc.Data.Series;
|
||||
|
||||
{$M+}
|
||||
|
||||
type
|
||||
TTag = Pointer;
|
||||
|
||||
// A generic interface for components that consume data of type T.
|
||||
IConsumer<T> = interface(IInvokable)
|
||||
IConsumer<T> = interface
|
||||
function Consume(const Value: T): TState;
|
||||
end;
|
||||
|
||||
// A producer generates data and distributes it to linked consumers.
|
||||
IProducer<T> = interface(IInvokable)
|
||||
IProducer<T> = interface
|
||||
function Link(const Consumer: IConsumer<T>): TTag;
|
||||
procedure Unlink(Tag: TTag);
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user