Einzelnen Beitrag anzeigen

El.Blindo

Registriert seit: 24. Okt 2006
18 Beiträge
 
#1

C-Code zu Delphi (SharedMem)

  Alt 19. Jul 2008, 15:28
Moin, Moin,

Für eines meiner Projekte muss ich ein wenig C-Code in Delphi umwandeln, genaugenommen geht es dabei um Zugriff auf den Shared-Memory Bereich eines anderen Programmes.

Erst einmal der C-Code

Zitat:
#define SHMEM_NAME _T("GPUZShMem")
#define MAX_RECORDS 128

#pragma pack(push, 1)
struct GPUZ_RECORD
{
WCHAR key[256];
WCHAR value[256];
};

struct GPUZ_SENSOR_RECORD
{
WCHAR name[256];
WCHAR unit[8];
UINT32 digits;
double value;
};

struct GPUZ_SH_MEM
{
UINT32 version; // Version number, 1 for the struct here
volatile LONG busy; // Is data being accessed?
UINT32 lastUpdate; // GetTickCount() of last update
GPUZ_RECORD data[MAX_RECORDS];
GPUZ_SENSOR_RECORD sensors[MAX_RECORDS];
};
#pragma pack(pop)
Nun meine Umsetzung

Delphi-Quellcode:
  tGPUZ_Record = packed record
    GPUZ_Key : Array [0..255] of WChar;
    GPUZ_Value : Array [0..255] of WChar;
  end;

  tGPUZ_Sensors = packed record
    GPUZ_Name : Array [0..255] of WChar;
    GPUZ_Unit : Array [0..7] of WChar;
    GPUZ_Digits : DWord;
    GPUZ_Value : Double;
  End;

  tGPUZShMem=packed record
    Version : DWord;
    Busy : Longint;
    LastUpdate : DWord;
    Daten : Array[0..127] of tGPUZ_Record;
    Sensors : Array[0..127] of tGPUZ_Sensors;
  end;

  PGPUZShMem = ^tGPUZShMem;
Ich bin mir aber absolut nicht sicher ob diese Umsetzung richtig ist, besonders da ich in meinem Projekt gelegentlich ein Exception bekomme, leider ohne Hinweis auf die Adresse.

Ich wäre also dankbar wenn mir jemand bestätigen könnte das mein Code richtig ist, oder aber Aufzeigen könnte was daran falsch ist.

Mfg

El-Blindo

[edit=Phoenix]Tippfehler im Titel korrigiert. Mfg, Phoenix[/edit]
  Mit Zitat antworten Zitat