ich habe gerade kein Freepascal installiert: Könntest Du in ein paar Zeilen kurz zeigen, wie die Include-Dateien dort in Teilen geladen werden?
Delphi-Quellcode:
unit windows;
{$PACKSET 1}
{$ifndef NO_SMART_LINK}
{$smartlink on}
{$endif}
{ stuff like array of const is used }
{$mode objfpc}
{$inline on}
{$calling stdcall}
interface
{$define read_interface}
{$undef read_implementation}
{$i base.inc}
{$i errors.inc}
{$i defines.inc}
{$i struct.inc}
{$i messages.inc}
{$i ascfun.inc}
{$i unifun.inc}
{$ifdef UNICODE}
{$i unidef.inc}
{$else not UNICODE}
{$i ascdef.inc}
{$endif UNICODE}
{$i func.inc}
{$i redef.inc}
implementation
{$undef read_interface}
{$define read_implementation}
{$i base.inc}
{$i errors.inc}
{$i defines.inc}
{$i struct.inc}
{$i messages.inc}
{$i ascfun.inc}
{$i unifun.inc}
{$ifdef UNICODE}
{$i unidef.inc}
{$else not UNICODE}
{$i ascdef.inc}
{$endif UNICODE}
{$i func.inc}
{$i redef.inc}
end.
man beachte die DEFINEs und UNDEFs im Interfaceteil der
Unit:
Delphi-Quellcode:
{$define read_interface}
{$undef read_implementation}
und im Impelemtationteil der
Unit:
Delphi-Quellcode:
{$undef read_interface}
{$define read_implementation}
Dazu noch ein Ausschnitt aus der base.inc:
Delphi-Quellcode:
{$ifdef read_interface}
type
//...
DWORD = cardinal;
//..
function GetBValue(
rgb : longint) : BYTE;
inline;
//...
function RGB(r,g,b : longint) : DWORD;
inline;
//...
{$endif read_interface}
{$ifdef read_implementation}
function GetBValue(
rgb : longint) : BYTE;
begin
GetBValue:=BYTE(
rgb shr 16);
end;
//...
function RGB(r,g,b : longint) : DWORD;
begin
RGB:=DWORD(((DWORD(BYTE(r)))
or ((DWORD(WORD(g)))
shl 8))
or ((DWORD(BYTE(b)))
shl 16));
end;
//...
{$endif read_implementation}
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.