hallo,
ich habe mal versucht überall einen PBigInteger zurückgeben zulassen. Ich bekomme aber einen Speicherzugriffsfehler in der Zeile
xh := a.shrR(n)^;
und hier der gesamte Code der Funktion.
Delphi-Quellcode:
function pas(
const a: TBigInteger;
const b : TBigInteger):PBigInteger;
var
n,m: LongInt;
xh,xl,yh,yl: TBigInteger;
t3,t1,t2: TBigInteger;
z1,z2,z3,z4,z5: TBigInteger;
begin
inc(c);
//if (c > 10) then halt;
Debug('
LenA:'+IntToStr(a.bitLength()) +'
# '+ a.bigIntegerToStr);
Debug('
LenB:'+IntToStr(b.bitLength()) +'
# '+ b.bigIntegerToStr);
m := Max(a.bitLength(),b.bitLength());
Debug('
max: '+IntToStr(m));
if (m <= 2)
then
begin
result := a.multr(b);
//WriteLn('lw:'+result.bigIntegerToStr);
end else
begin
Debug('
Durchgang: '+IntToStr(c));
Debug('
----------------');
n := (m
div 2);
(****************** X ***********************)
//BigInteger xH = x.shiftRight (n);
xh := a.shrR(n)^;
Debug('
xh:'+xh.bigIntegerToStr());
.
.
.
result^ := z5;
end;
Delphi-Quellcode:
function TBigInteger.shrR(n: Integer): PBigInteger;
var
tmp: TBigInteger;
begin
tmp := copy()^;
tmp.shiftright(n);
result := tmp.copy();
end;
Kann mir vielleicht jemand sagen, an welcher Stelle ich den Speichertzugriffsfehler haben könnte?
Danke