Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];
Внизперевод сишного хидера на Паскаль Найти похожие ветки
← →
team (2002-04-18 21:41) [0]привет
я в Си не знаток. вот тут надо перевести сишный хидер на Паскаль. как следующий код будет выглядеть на Паскале:
struct PDF_s {
[skipped]
size_t (*writeproc)(PDF *p, void *data, size_t size);
void (*errorhandler)(PDF *p, int level, const char* msg);
void *(*malloc)(PDF *p, size_t size, const char *caller);
void *(*calloc)(PDF *p, size_t size, const char *caller);
void *(*realloc)(PDF *p, void *mem, size_t size, const char *caller);
void (*free)(PDF *p, void *mem);
[skipped]
};
как я думаю:
type
size_t = Integer;
PPointer = ^Pointer;
writeproc_t = function(p : PDF; data : Pointer; size : size_t) : size_t;
errorproc_t = function(p1 : PDF; ttype : Integer; const msg : PChar) : Pointer;
allocproc_t = function(p2 : PDF; size : size_t; const caller : PChar) : PPointer;
reallocproc_t = function(p3 : PDF; mem : Pointer; size : size_t; const caller : PChar) : PPointer;
freeproc_t = function(p4 : PDF; mem : Pointer) : Pointer;
PDF_s = record
[skipped]
writeproc : writeproc_t;
errorhandler : errorproc_t;
malloc : allocproc_t;
calloc : allocproc_t;
realloc : reallocproc_t;
free : freeproc_t;
[skipped]
end;
а также:
typedef struct {
pdf_colorspace cs;
union {
float gray;
int pattern;
struct {
float r;
float g;
float b;
} rgb;
struct {
float c;
float m;
float y;
float k;
} cmyk;
struct {
float tint;
int cs;
} sep;
} val;
} pdf_color;
Паскаль:
type
_rgb = packed record
r, g, b : Single;
end;
_cmyk = packed record
c, m, y, k : Single;
end;
_sep = packed record
tint : Single;
cs : Integer;
end;
pdf_color = packed record
cs : pdf_colorspace;
case Integer of
^^^^^^^
0 : (gray : Single);
1 : (pattern : Integer);
2 : (rgb : _rgb);
3 : (cmyk : _cmyk);
4 : (sep : _sep);
end;
вот только не пойму, что вместо Integer должно стоять.
и еще: какой эквивалент типу FILE в Си, в Паскале?
заранее спасибо.
← →
Digitman (2002-04-19 11:45) [1]а ничего не пиши вместо Integer. прямо так и оставь - никаких проблем не будет.
можно, конечно, сделать поизящней, примерно так :
type
TColorModel = (cmGrayScale, cmPattern, cmRGB, cmCMYK, cmSEP);
pdf_color = packed record
cs : pdf_colorspace;
case TColorModel of
cmGrayScale : (gray : Single);
cmPattern : (pattern : Integer);
cmRGB : (rgb : _rgb);
cmCMYK : (cmyk : _cmyk);
cmSEP : (sep : _sep);
end;
← →
team (2002-04-23 13:37) [2]спасибо. но наверное можно вместо TColorModel поставить pdf_colorspace. думаю это тоже самое. (pdf_colorspace то же enumeration)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c