lok*_*oki 4 delphi pascal freepascal
我有这个C代码:
/*
WARNING: The order of this table must also match the order of a table
located in AcquireResizeFilter() in "resize.c" otherwise the users filter
will not match the actual filter that is setup.
*/
typedef enum
{
UndefinedFilter,
PointFilter,
BoxFilter,
TriangleFilter,
HermiteFilter,
HannFilter,
HammingFilter,
BlackmanFilter,
GaussianFilter,
QuadraticFilter,
CubicFilter,
CatromFilter,
MitchellFilter,
JincFilter,
SincFilter,
SincFastFilter,
KaiserFilter,
WelchFilter,
ParzenFilter,
BohmanFilter,
BartlettFilter,
LagrangeFilter,
LanczosFilter,
LanczosSharpFilter,
Lanczos2Filter,
Lanczos2SharpFilter,
RobidouxFilter,
RobidouxSharpFilter,
CosineFilter,
SplineFilter,
LanczosRadiusFilter,
CubicSplineFilter,
SentinelFilter /* a count of all the filters, not a real filter */
} FilterType;
Run Code Online (Sandbox Code Playgroud)
和
WandExport MagickBooleanType MagickResizeImage(MagickWand *wand,
const size_t columns,const size_t rows,const FilterType filter)
Run Code Online (Sandbox Code Playgroud)
我将它转换为Pascal,如下所示:
type
FilterType =(
UndefinedFilter,
PointFilter,
BoxFilter,
TriangleFilter,
HermiteFilter,
HannFilter,
HammingFilter,
BlackmanFilter,
GaussianFilter,
QuadraticFilter,
CubicFilter,
CatromFilter,
MitchellFilter,
JincFilter,
SincFilter,
SincFastFilter,
KaiserFilter,
WelchFilter,
ParzenFilter,
BohmanFilter,
BartlettFilter,
LagrangeFilter,
LanczosFilter,
LanczosSharpFilter,
Lanczos2Filter,
Lanczos2SharpFilter,
RobidouxFilter,
RobidouxSharpFilter,
CosineFilter,
SplineFilter,
LanczosRadiusFilter,
CubicSplineFilter,
SentinelFilter); // a count of all the filters, not a real filter
Run Code Online (Sandbox Code Playgroud)
和
function MagickResizeImage(wand: PMagickWand; const columns: size_t; rows: size_t; const filter: FilterType): MagickBooleanType; cdecl; external MagickWandDLL;
Run Code Online (Sandbox Code Playgroud)
当我打电话时MagickResizeImage(),我收到了访问冲突:(
如果我改变const filter: FilterType到const filter: integer,它的工作原理.
知道我做错了什么吗?
Dav*_*nan 10
在Windows上的C中,枚举是一个int,因此大小为4个字节.在Delphi中,默认情况下,它是一个单字节,如果有超过256个值,则为两个字节,依此类推.
您需要确保您的Delphi类型与C类型相同.例如使用MINENUMSIZE指令.
{$MINENUMSIZE 4}
Run Code Online (Sandbox Code Playgroud)
在定义枚举类型之前放置它.