Zitat von
Luckie:
Könntest du mir das mal eben bitte an obigen Code demonstrieren? Wäre nett von dir.
Nein, denn ich weiss selbst nicht wie es funktioniert
Ich wollte eigentlich über
hppemit herausfinden wozu das gut ist
In der D7 Hilfe steht
Privates Symbol
---------------
Typ Parameter
Syntax {$NODEFINE Bezeichner}
Anmerkungen
Die Direktive
NODEFINE verhindert, dass das angegebene Symbol in die für C++ generierte Header-Datei aufgenommen wird, während bestimmte Informationen in die Objektdatei ausgegeben werden können. Wenn Sie
NODEFINE verwenden, liegt es in Ihrer eigenen Verantwortung, mit
HPPEMIT alle benötigten Typen zu definieren. Ein Beispiel:
Delphi-Quellcode:
type
Temperature = type double;
{$NODEFINE Temperature}
{$HPPEMIT 'typedef double Temperature'}
In der Types.pas von Delphi 7 finde ich folgenden Code:
Delphi-Quellcode:
...
PPoint = ^TPoint;
TPoint = packed record
X: Longint;
Y: Longint;
end;
{$NODEFINE TPoint}
tagPOINT = TPoint;
{$NODEFINE tagPOINT}
PRect = ^TRect;
TRect = packed record
case Integer of
0: (Left, Top, Right, Bottom: Longint);
1: (TopLeft, BottomRight: TPoint);
end;
{$NODEFINE TRect}
...
(*$HPPEMIT 'namespace Types'*)
(*$HPPEMIT '{'*)
(*$HPPEMIT ' struct TPoint : public POINT'*)
(*$HPPEMIT ' {'*)
(*$HPPEMIT ' TPoint() {}'*)
(*$HPPEMIT ' TPoint(int _x, int _y) { x=_x; y=_y; }'*)
(*$HPPEMIT ' TPoint(POINT& pt)'*)
(*$HPPEMIT ' {'*)
(*$HPPEMIT ' x = pt.x;'*)
(*$HPPEMIT ' y = pt.y;'*)
(*$HPPEMIT ' }'*)
(*$HPPEMIT ' };'*)
(*$HPPEMIT ' '*)
(*$HPPEMIT ' typedef TPoint tagPoint;'*)
(*$HPPEMIT ' '*)
(*$HPPEMIT ' struct TRect : public RECT'*)
(*$HPPEMIT ' {'*)
(*$HPPEMIT ' TRect() {}'*)
(*$HPPEMIT ' TRect(const TPoint& TL, const TPoint& BR) { left=TL.x; top=TL.y; right=BR.x; bottom=BR.y; }'*)
(*$HPPEMIT ' TRect(int l, int t, int r, int b) { left=l; top=t; right=r; bottom=b; }'*)
(*$HPPEMIT ' TRect(RECT& r)'*)
(*$HPPEMIT ' {'*)
(*$HPPEMIT ' left = r.left;'*)
(*$HPPEMIT ' top = r.top;'*)
(*$HPPEMIT ' right = r.right;'*)
(*$HPPEMIT ' bottom = r.bottom;'*)
(*$HPPEMIT ' }'*)
(*$HPPEMIT ' int Width () const { return right - left; }'*)
(*$HPPEMIT ' int Height() const { return bottom - top ; }'*)
(*$HPPEMIT ' bool operator ==(const TRect& rc) const '*)
(*$HPPEMIT ' {'*)
(*$HPPEMIT ' return left == rc.left && top==rc.top && '*)
(*$HPPEMIT ' right == rc.right && bottom==rc.bottom; '*)
(*$HPPEMIT ' }'*)
(*$HPPEMIT ' bool operator !=(const TRect& rc) const '*)
(*$HPPEMIT ' { return !(rc==*this); }'*)
(*$HPPEMIT ' '*)
(*$HPPEMIT ' __property LONG Left = { read=left, write=left }; '*)
(*$HPPEMIT ' __property LONG Top = { read=top, write=top }; '*)
(*$HPPEMIT ' __property LONG Right = { read=right, write=right }; '*)
(*$HPPEMIT ' __property LONG Bottom = { read=bottom, write=bottom }; '*)
(*$HPPEMIT ' };'*)
(*$HPPEMIT '} /* namespace Types */ ;'*)
...
Hier werden wohl in C++ Syntax die Delphi Typen für den C++ Header deklariert.
Das ist alles was ich dazu weiß.
Ich hoffe das hilt Dir Luckie