Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-17493
Yuri Btr
2002-04-12 16:03
2002.05.06
Invalid field descriptor


1-17529
DikobraZ
2002-04-23 20:57
2002.05.06
Можно ли расположить надпись поверх memo и ему подобных?


1-17574
SaperXL
2002-04-22 09:38
2002.05.06
PaintBox


3-17475
rvs
2002-04-12 10:41
2002.05.06
Tquery


1-17645
drnet
2002-04-22 16:51
2002.05.06
Форма не стандартной формы. HELP!!!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский