Einzelnen Beitrag anzeigen

Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#1

Zugriffsverletzung bei Dauertest

  Alt 5. Mär 2006, 16:22
Hi @ All.

Ich habe einen Algorithmus welcher ca 230 Durchläufe pro Sekunde hat. Allerdings bleibt er so ungefähr bei 15000 Durchläufen mit einer Zugriffsverletzung hängen? Warum?

Delphi-Quellcode:
procedure CompareImages(Image1,Image2:TBitmap);
var P,P2 : PRGBTripleArray;
    i : integer;
    differents : integer;
    size : integer;
    color1,color2:TColor;
begin
differents := 0;
QueryPerformanceFrequency(freq);
QueryPerformanceCounter(zeit1);
P := Image1.ScanLine[Image1.Height-1];
P2 := Image2.ScanLine[Image2.Height-1];
size := Image1.Width*Image1.Height;
for i := 0 to size-1 do
  begin
  color1 := RGBToColor(RGB(P[i].rgbtRed,P[i].rgbtGreen,P[i].rgbtBlue));
  color2 := RGBToColor(RGB(P2[i].rgbtRed,P2[i].rgbtGreen,P2[i].rgbtBlue));

  if color1-color2 <> 0 then
    inc(differents);
  end;

QueryPerformanceCounter(zeit2);
Aufruf Erfolg über einmaliges Aufrufen der Procedure Compare
Delphi-Quellcode:
procedure Compare;
begin
if stopping then
  Exit;

Image2.Picture.Bitmap.FreeImage;
Image2.Picture.Bitmap.LoadFromFile(Listbox1.Items[ListBox1.ItemIndex]);

inc(counter);
Form1.Caption := IntToStr(counter);

CompareImages(Image1.Picture.Bitmap,Image2.Picture.Bitmap);

if ListBox1.ItemIndex = ListBox1.Items.Count-1 then
  ListBox1.ItemIndex := 0;
ListBox1.ItemIndex := ListBox1.ItemIndex +1;
Compare;
end;
Hoffe ihr könnt mir helfen den Fehler zu finden. Vermute das es etwas mit dem Ram zutun hat. Gebe ich die Sachen vll nicht alle wieder frei?
Philipp F.
  Mit Zitat antworten Zitat