AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C-Code zu Delphi (SharedMem)

Ein Thema von El.Blindo · begonnen am 19. Jul 2008 · letzter Beitrag vom 16. Aug 2008
Antwort Antwort
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
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: C-Code zu Delhi (SharedMem)

  Alt 6. Aug 2008, 16:04
Du könntest ist beiden Programmiersprachen mit Size die Struktur prüfen.
Wenn die Größe gleich ist, dann hast du es richtig übersetzt.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
christian_u

Registriert seit: 13. Nov 2006
126 Beiträge
 
#3

Re: C-Code zu Delphi (SharedMem)

  Alt 6. Aug 2008, 16:56
das #pragma pack schaut für mich so aus als sollte es ein packet record sein...
  Mit Zitat antworten Zitat
El.Blindo

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

Re: C-Code zu Delphi (SharedMem)

  Alt 16. Aug 2008, 01:18
Deshalb ist es ja auch ein packed record.
Ich weiss zwar immer noch nicht ob das ganze 100% richtig ist, aber immerhin funktioniert es so.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz