Einzelnen Beitrag anzeigen

Benutzerbild von Orbmu2k
Orbmu2k

Registriert seit: 29. Nov 2004
Ort: Erfurt
254 Beiträge
 
Turbo Delphi für Win32
 
#1

[fixed] Array Dimension überschritten

  Alt 15. Dez 2004, 10:28
Wollte mal den PrimeCode von Sakura mit int64 bauen ... aber irschendwas ist da faul


Warum bekomm ich hier ne Zugriffsverletzung ?


Delphi-Quellcode:
var
  PrimeGrid: array of Boolean;

implementation

{ TPrimeThread }

procedure TPrimeThread.CalcPrimes(EndNum: Int64);
var
  NotAPrime, CurrPrimeCandidate: Int64;
begin
  CurrPrimeCandidate := 2;
  SetLength(PrimeGrid,EndNum+1);
  FillChar(PrimeGrid, SizeOf(PrimeGrid), #1);
  PrimeGrid[1] := False;
  while (CurrPrimeCandidate < EndNum) do
  begin

    
    // Hab das hiermit mal debugt und es tritt genau bei dem Wert auf
    if CurrPrimeCandidate = 7126783 then
    begin
      asm
       int 3
      end;
    end;


    if PrimeGrid[CurrPrimeCandidate] then // hier Zugriffsverletzung wenn CurrPrimeCandidate = 7126783
    begin
      NotAPrime := CurrPrimeCandidate * 2;
      while NotAPrime <= EndNum do
      begin
        PrimeGrid[NotAPrime] := False;
        Inc(NotAPrime, CurrPrimeCandidate);
      end;
    end;
    CurrPrimeCandidate := CurrPrimeCandidate + 1;
  end;

end;

procedure TPrimeThread.Execute;
begin
  CalcPrimes(10000000);
end;
  Mit Zitat antworten Zitat