Главная страница
    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
14-17695
dlp
2002-03-30 11:05
2002.05.06
Помогите


14-17668
VictorT
2002-02-20 16:47
2002.05.06
Игрушка для програмиста


1-17629
Ptushenko Denis
2002-04-23 07:54
2002.05.06
Где можно взять компанент DirectX для Delphi6 ?


6-17661
ATLANTIDO
2002-02-18 00:49
2002.05.06
ON API CONNECT


1-17600
Egor111
2002-04-22 17:23
2002.05.06
TListBox





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