Einzelnen Beitrag anzeigen

Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#29

AW: Thread läuft nicht parallel --

  Alt 10. Jan 2014, 17:44
Bei aller Freude, da sind noch reichlich Fehler drin...

Delphi-Quellcode:
pf1bit: Laenge := Ceil(SearchBMP.Width / 8);
pf4bit: Laenge := Ceil(SearchBMP.Width / 2);
CompareMem vergleicht nur ganze Byte, wenn dein gesuchtes Bild mitten in einem Byte anfängt oder nicht nur ganze Byte belegt, wirst du es so nicht finden.

Delphi-Quellcode:
pf15bit: Laenge := Ceil(SearchBMP.Width * 15 / 8);
...
Diese Pixelformat belegt für jedes Pixel 2 Byte, das restliche Bit wird nicht genutzt.

Delphi-Quellcode:
for y := 0 to ScreenBMP.Height - 1 do
  for x := 0 to ScreenBMP.Width - 1 do
Hier muss die Breite/Höhe des SearchBMP abgezogen werden, sonst greift CompareMem auf Speicher zu, der nicht mehr zu der Bitmap gehört.

Delphi-Quellcode:
CompareMem(SearchP,@ScreenP[x],Laenge)
...
ScreenP ist vom Type TRGBTripleArray, bei anderen Pixelformaten als pf24Bit wird auf die falsche Adresse zugegriffen.
  Mit Zitat antworten Zitat