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.