AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung bei Dauertest

Ein Thema von Flips · begonnen am 5. Mär 2006 · letzter Beitrag vom 5. Mär 2006
Antwort Antwort
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
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#2

Re: Zugriffsverletzung bei Dauertest

  Alt 5. Mär 2006, 16:48
1. In welcher Zeile bleibt er hängen?
2. Könnte deine Schleifenvariable übergelaufen sein?

mfG

Markus
Markus
  Mit Zitat antworten Zitat
Flips

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

Re: Zugriffsverletzung bei Dauertest

  Alt 5. Mär 2006, 17:14
Hm...das is ja das Problem. Wenn ich wüsste in welcher Zeile er hängenbleibt...Klar, könnte in jede Zeile einen Breakpoint setzen. Dann aber (Anzahl_der_Zeilen * Anzahl_der_Durchläufe) oft auf Weiter zu klicken ist ein bisschen Zeitaufwändig

Zur Schleifenvariable: Es werden immerwieder die selben 10 Bilder durchlaufen. Alle mit einer Größe von 320*240. Sind alle 10 durch fängt es wieder von vorne an. Und da Integerwerte weitaus größer als 76800 (320*240) sein können, schliesse ich das aus.

Trotzdem THX
Weitere Vorschläge?
Philipp F.
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Zugriffsverletzung bei Dauertest

  Alt 5. Mär 2006, 17:15
Du kannst für Breakpoints doch Bedingungen setzten, (z.B. dass er nur gilt, wenn die Schleife 500 mal durchgelaufen ist oder so) dadurch kannst du da ganze doch eingrenzen...
Benjamin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz