Einzelnen Beitrag anzeigen

mr.warft

Registriert seit: 7. Mär 2008
6 Beiträge
 
#13

Re: Interner Fehler C1537 - result Fehler???

  Alt 9. Mär 2008, 13:18
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
  Mit Zitat antworten Zitat