Einzelnen Beitrag anzeigen

Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

Übersetzung C++ -> Delphi Probleme

  Alt 12. Nov 2004, 12:57
Hallo!

Ich versuche Funktionen der _ISource30.dll zu wrappen.
ImageSource Webpage

Hier sind Auszüge aus dem C++ Header:

Code:
_IS3EXP_   BOOL IS3CALL _IS3GetJPGDimsEx(HISSRC hSource, UINT32 *puWidth, UINT32 *puHeight, UINT32 *puBitDepth, UINT32 *puColorSpace, ISDPIStruct *pDPIStruct);

// structure used to set DPI to files
#ifndef IS_DPI_STRUCT_DEF
#define IS_DPI_STRUCT_DEF
typedef struct ISDPIStruct_t
{
   UINT32 uDPIX;
   UINT32 uDPIY;
   UINT32 uDPIUnits;
} ISDPIStruct;
#endif
Hier ein bisschen Delphi-Code:
Delphi-Quellcode:
implementation

type
  TDpiStruct = packed record
   DPiX: DWORD;
   DPiY: DWORD;
   DPIUnits: DWORD;
  end;

  PDpiStruct = ^TDpiStruct;

function IS3GetJPGDims(Source: THandle; Width, Height, BitDepth, ColorSpace: DWORD; DpiStruct:PDpiStruct): Bool; stdcall;
..

interface
..
function IS3GetJPGDims; external IS3Dll name '_IS3GetJPGDims';


function ISJPGCMYK(const Filename: string): Boolean;
var
  Width, Height, BitDepth, ColorSpace: DWORD;
  DpiStruct: TDpiStruct;
  Handle: THandle;
  Error: DWord;
begin
  IS3Initialize(PChar('{key}'));
  Result := False;
  FillMemory(@DpiStruct, Sizeof(DpiStruct), 0);
  try
    Handle := IS3OpenFileSource(PAnsiChar(Filename));
    if Handle = 0 then
    begin
      Error := IS3GetLastError;
      Result := Boolean(Error);
      Exit;
    end;
    IS3GetJPGDims(Handle, Width, Height, BitDepth, ColorSpace, @DpiStruct); //Hier knallt es.
  finally
    IS3CloseSource(Handle);
  end;
end;
Den Handle bekomme ich ohne Probleme. Wenn ich nun 'IS3GetJPGDims' in 'ISJPGCMYK' aufrufe knallt es. Ich denke es liegt an den Typen.
Es sind meine ersten Versuche eine dll zu übersetzen, wäre cool wenn ich Starthilfe bekomme.

Grüße

Sebastian

btw: _ISource30.dll ist eine sehr mächtige Sammlung von Tools zur Bildbearbeitung. Für 50 Euro wird dann auch das fette Kreuz aus den Bildern entfernt, wenn man nicht registriert ist.

[edit:]
äh, ja pointer sollte man nicht ohne sie allozieren in eine funktion geben.
Ich habe 'Width, Height, BitDepth, ColorSpace' jetzt mal mit '0' initialisiert.
Es knallt nicht mehr, aber Ergebnisse bekomme ich nicht zurück.
Sebastian
  Mit Zitat antworten Zitat