Danke für die Antwort.
Bei den Zuweisungen der beiden Pointer habe ich offenbar etwas verwechselt. Ich habe es nun ausgetauscht, weiterhin kommt der Umwandlungsfehler. Jetzt sieht es so aus
Code:
lpAnfBmpPic := @(hkBMP.bmPixelArr);
lpPuBmpPIC := @(hkBMP.bmi);
{}
StretchDIBits ( Form1.Canvas.Handle, // DIB-Quelle in ZIEL-Fenster angepaßt
10, // X-Ursprung-Fenster
10, // Y-Ursprung-Fenster
960, // Fenster-Breite
600, // Fenster-Höhe
0, // X-Ursprung-BMP
0, // Y-Ursprung-BMP
320, // X-Breite BMP
200, // Y-Höhe BMP
lpAnfBmpPic, // Anf Bild-Daten in hkBMP+1078
lpPuBmpPIC, // BitMapInfoHeader
DIB_RGB_COLORS, // Die Farb-Tab enthält
RGB-Werte
SRCCOPY ) ; // Operation: Quelle => Ziel kopieren
Code:
tagBITMAPINFO = packed record
bmiHeader: TBitmapInfoHeader;
bmiColors: array[0..0] of TRGBQuad;
end;
tagBITMAPINFO habe ich bewusst nicht benutzt, weil durch das darin enthaltene bmiColors-Array der Record um 4 Bytes zu lang war.
Ein Zeiger auf TBitMapInfoHeader ist adressmäßig identisch mit einem Zeiger auf tagBitMapInfo. In meinem Record kommen nach dem BitmapInfoHeader ja sofort die Colors für 256 Farben.