Einzelnen Beitrag anzeigen

Brainshock

Registriert seit: 26. Nov 2004
Ort: 37345
214 Beiträge
 
Delphi 7 Professional
 
#1

C Header Konvertierung: Pointer <> THandle

  Alt 22. Jan 2009, 08:44
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
Matthias
  Mit Zitat antworten Zitat