![]() |
[fixed] Array Dimension überschritten
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; |
Re: Warum Zugriffsverletzung
Ok habs hinbekommen ...
Hing wohl massgeblich am GetMem ;-)
Delphi-Quellcode:
var
PrimeGrid: array of Boolean; implementation { TPrimeThread } procedure TPrimeThread.CalcPrimes(EndNum: Int64); var NotAPrime, CurrPrimeCandidate: Int64; begin CurrPrimeCandidate := 0; GetMem(PrimeGrid,EndNum+1); SetLength(PrimeGrid,EndNum+1); while (CurrPrimeCandidate < EndNum) do begin PrimeGrid[CurrPrimeCandidate] := True; CurrPrimeCandidate := CurrPrimeCandidate + 1; end; PrimeGrid[1] := False; CurrPrimeCandidate := 2; while (CurrPrimeCandidate < EndNum) do begin if PrimeGrid[CurrPrimeCandidate] then begin NotAPrime := CurrPrimeCandidate * 2; while NotAPrime <= EndNum do begin PrimeGrid[NotAPrime] := False; NotAPrime := NotAPrime + CurrPrimeCandidate; end; end; CurrPrimeCandidate := CurrPrimeCandidate + 1; end; end; procedure TPrimeThread.Execute; begin CalcPrimes(300000000); end; |
Re: Warum Zugriffsverletzung
wie wäre es mit einem gescheiten titel?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr. |
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 by Thomas Breitkreuz