Einzelnen Beitrag anzeigen

blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#1

GetMem Problem

  Alt 8. Nov 2012, 06:15
Hallo!

ich habe folgenden Code:
Delphi-Quellcode:
var
   buf1, buf2, buf3: Pointer;
   [...]
begin
   [...]
   getmem(buf1, biSizeImage);
   getmem(buf2, biSizeImage);
   getmem(buf3, biSizeImage);

   if GetDIBits(ssDC, ssHBmp, 0, biHeight, buf1, ssBmpInfo, DIB_RGB_COLORS) = 0 then begin
      showmessage('Fehler buf1');
   end;

   if GetDIBits(ssDC, ssHBmp, 0, biHeight, buf2, ssBmpInfo, DIB_RGB_COLORS) = 0 then begin
      showmessage('Fehler buf2');
   end;

   if GetDIBits(ssDC, ssHBmp, 0, biHeight, buf3, ssBmpInfo, DIB_RGB_COLORS) = 0 then begin
      showmessage('Fehler buf3');
   end;
   [...]
end;
GetDIBits funktioniert immer 1 mal und schlägt 2 mal fehl. Dabei ist die Reihenfolge in der ich GetMem aufrufe entscheidend. GetDIBits funktioniert immer nur mit dem Buffer, der als erstes reserviert wird, bei den anderen schlägt er fehl. Hier zum Beispiel klappt der erste Aufruf von GetDIBits, die anderen beiden schlagen fehl.

Um überhaupt den Fehler so weit einzugrenzen habe ich ewig gebraucht. Und jetzt habe ich keine Ahnung was der Fehler zu bedeuten hat. Leider hilft RaiseLastOSError nicht weiter. (Deshalb hat die Fehlereingrenzung so lange gedauert.) Und ähnliche Funktionen bringen mich auch nicht weiter. Ich habe alles in der Hilfe-Kategorie Speicherverwaltung ausprobiert:
GetMem, AllocMem, SysGetMem - hat aber auch nichts geändert.

Hat jemand eine Idee?

Grüße
blablab
  Mit Zitat antworten Zitat