Shared Memory eines C++-Programms auslesen

MrCruiser

Grünschnabel
Dies mein erster Post hier und hab gleich ne Frage :rolleyes:

Ich will Daten eines C++-Programms über Shared Memory auslesen und in meinem Delphi-Programm weiter verarbeiten.
Allerdings habe ich keine Ahnung wie das gehen soll... :-/
Der Entwickler des Tools hat mir folgenden Ausschnitt des Codes geschickt, damit ich die Strukur sehe, allerdings kann ich damit nichts anfangen:
Code:
 struct GOTTV
{
int iVisual;
int iState;
int iChNumber;
char cProgDateStart[10];
int iProgTimeStart;
char cProgDateEnd[10];
int iProgTimeEnd;
int iProgNamePos;
int iProgSubPos;
int iProgDescPos;
BYTE data[65470];
};

Als Bemerkung hat er folgendes dazu geschrieben:
Die ersten paar Variablen dürften klar sein.
Das Ende ist interessant:
Die int-Variablen, die *Pos heißen, enthalten Byte-Positionen. Und zwar
die Position des Strings in dem Byte-Array am Ende der Struktur.

Das hab ich deswegen so gemacht, weil diese Strings jeweils variabel
lang sind. Und ich wollte nicht ab irgendeiner Länge abschneiden.
Deswegen ist das so gelöst.

Das Shared Memory Segment hat den Namen "GotTV Data Collector shared".

Blickt einer von euch da durch?
 
Hallo,
so wirklich weiß ich die Antwort nicht. Aber zunächst wirst du wahrscheinlich einen Datentyp definieren müssen, welcher meiner Meinung wie folght aussehen sollte:
Code:
Type
  TGotTV = Record
    iVisual,
    iState,
    iChNumber: Integer;
    cProgDateStart: Array[0..9] of Char;
    iProgTimeStart: Integer;
    cProgDateEnd: Array[0..9] of Char;
    iProgTimeEnd,
    iProgNamePos,
    iProgSubPos,
    iProgDescPos: Integer;
    data: Array[0..65469] of Byte;
  end;
Ich weiß nicht wie C++ die Daten nach den beiden char..[10] ausrichtet. Ev. ist die Definition als
Code:
TGotTV = packed Record
erforderlich. Von diesem Datentyp musst du jetzt eine Variable anlegen. Wie du dann die Daten in die Variable bekommst weiß ich leider auch nicht. Vielleicht findest du in der Delphihilfe unter ShareMem die nötigen Infos.
 

Neue Beiträge

Zurück