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]