Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Interner Fehler C1537 - result Fehler??? (https://www.delphipraxis.net/109789-interner-fehler-c1537-result-fehler.html)

Dezipaitor 8. Mär 2008 13:50

Re: Interner Fehler C1537 - result Fehler???
 
Genau, wenn du mit Objects arbeiten willst, dann musst du Pointer auf Object verwenden.
Also überall statt TBigInteger eben PBigInteger zurückgeben.

mr.warft 8. Mär 2008 13:59

Re: Interner Fehler C1537 - result Fehler???
 
Ich bin in Zeigergeschichten nicht so fit. Wie meinst du das? Kannst du mir das mal an einer der Funktionen zeigen?

mr.warft 9. Mär 2008 12:18

Re: Interner Fehler C1537 - result Fehler???
 
hallo,

ich habe mal versucht überall einen PBigInteger zurückgeben zulassen. Ich bekomme aber einen Speicherzugriffsfehler in der Zeile

Delphi-Quellcode:
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 :firejump:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz