Moin,
es geht mal wieder um die Konvertierung einer (der) C Header Datei nach Pascal. Eine Zuweisung die in C funktioniert läßt sich in Pascal so nicht umsetzen.
Folgendes steht im C Header (abgekürzt):
Code:
typedef struct tagSCBARSCANNER
{
/*
handle to image */
HANDLE pDIB; <-- wichtige Stelle
} SCBARSCANNER, *PSCBARSCANNER;
typedef struct tagSCIMAGE
{
/* the header, the palette, the pixels */
LPVOID pDIB; <-- wichtige Stelle
} SCIMAGE, *PSCIMAGE;
und im C Demo steht:
Code:
...
SCBARSCANNER scanner;
SCIMAGE image;
memset( &scanner, 0, sizeof(SCBARSCANNER));
memset( &image, 0, sizeof(SCIMAGE) );
...
scanner.pDIB = image.pDIB; <-- wichtige Stelle
...
Meine Übersetzung sieht so aus:
Delphi-Quellcode:
type
PScImage = ^TScImage;
tagSCIMAGE =
packed record
pDIB: Pointer; <-- wichtige Stelle
end;
TScImage = tagSCIMAGE;
PScBarScanner = ^TScBarScanner;
tagSCBARSCANNER =
packed record
// handle to image
pDIB: THandle; <-- wichtige Stelle
end;
TScBarScanner = tagSCBARSCANNER;
und mein Pascal Demo:
Delphi-Quellcode:
var
Scanner: TScBarScanner;
Image: TScImage;
begin
FillChar(Scanner, SizeOf(TScBarScanner), 0);
FillChar(Image, SizeOf(TScImage), 0);
...
Scanner.pDIB:= Image.pDIB; <-- wichtige Stelle
...
end;
Die Zuweisung von Pointer auf THandle will natürlich wegen inkompatiblen Typen nicht.
Kann mir einer helfen und mir sagen, wie ich das Problem lösen muss.
Gruß
Matthias