Главная страница
    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.004 c
1-17576
KIR
2002-04-19 09:53
2002.05.06
Как отловить нажатие на стрелки?


3-17481
yyy
2002-04-12 12:58
2002.05.06
Можно как-либо вставить в бд поля её типа?


3-17512
yozhik
2002-04-11 21:39
2002.05.06
Создание перекрестного запроса


1-17518
PaRL
2002-04-23 14:55
2002.05.06
TChart(не заню в который раз :) )


1-17550
sergey32
2002-04-23 15:58
2002.05.06
При редактировании года в DateTimePicker приложение виснет





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский