Einzelnen Beitrag anzeigen

NicoDE
(Gast)

n/a Beiträge
 
#4

Re: C++ header Datei umwandeln in Delphi unit (union)

  Alt 2. Mär 2005, 13:59
Delphi-Quellcode:
type
  PMpaConfig = ^TMpaConfig;
  PMPA_CONFIG = PMpaConfig;
  {$EXTERNALSYM PMPA_CONFIG}
  tagMPA_CONFIG = record
    structLen: ULONG;
    set_: record
      case Integer of
        0: (
          bits: record
(*
            UCHAR FrameBufferSizeRx : 1;
            UCHAR NumFrameBuffersRx : 1;
            UCHAR BaudRate          : 1;
            UCHAR ClockRate        : 1;
            UCHAR ClockMode        : 1;
            UCHAR InternalLoopback  : 1;
            UCHAR RxClockSource    : 1;
            UCHAR TxClockSource    : 1;
            UCHAR TRXCOutput        : 1;
            UCHAR Encoding          : 1;
            UCHAR DPLLClockSource  : 1;
            UCHAR DPLLMode          : 1;
            UCHAR AutoRTSDeact      : 1;
            UCHAR CRCPreset        : 1;
            UCHAR IdleLineControl  : 1;
            ULONG pad              : (8*sizeof(ULONG) - 13);
*)

          end);
        1: (
          all: ULONG);
    { end; }
    end;
    FrameBufferSizeRx: ULONG;
    NumFrameBuffersRx: ULONG;
    BaudRate : ULONG;
    ClockRate : ULONG;
    ClockMode : ULONG;
    InternalLoopback : BOOLEAN;
    RxClockSource : CLOCK_SOURCE;
    TxClockSource : CLOCK_SOURCE;
    TRXCOutput : TRXC_OUTPUT;
    Encoding : ENCODING;
    DPLLClockSource : DPLL_CLOCK_SOURCE;
    DPLLMode : DPLL_MODE;
    AutoRTSDeact : BOOLEAN;
    CRCPreset : BOOLEAN;
    IdleLineControl : IDLE_LINE_CONTROL;
  end;
  TMpaConfig = tagMPA_CONFIG;
  {$EXTERNALSYM tagMPA_CONFIG}
  MPA_CONFIG = tagMPA_CONFIG;
  {$EXTERNALSYM MPA_CONFIG}
Das Bitset lässt sich nicht direkt übersetzen.

[edit]

Das C-Bitset könnte man mit einem Delphi-set ersetzen (die Benutzung im Quellcode wäre nicht identisch; und pad ist damit schwer bis gar nicht abbildbar)
Delphi-Quellcode:
bits: set of (
  FrameBufferSizeRx,
  NumFrameBuffersRx,
  BaudRate,
  ClockRate,
  ClockMode,
  InternalLoopback,
  RxClockSource,
  TxClockSource,
  TRXCOutput,
  Encoding,
  DPLLClockSource,
  DPLLMode,
  AutoRTSDeact,
  CRCPreset,
  IdleLineControl)
Allerdings weiss ich nicht, ob der Delphi-Compiler (habe kein Delphi installiert) mit set of () zurecht kommt - falls nicht, müsste man einen Typen dafür definieren...

[/edit]

Alignment könnte interessant werden... (packed)
  Mit Zitat antworten Zitat