Forum: PC-Programmierung C# Array of Struct in Struct Hilfe!


von Thomas (Gast)


Lesenswert?

typedef struct
{
CLS_NUMBER_OF_SWITCHES  numOfLogins;
  CLS_AGENT_ACTIVITY  pAgentInfo[5];
}
  CLS_AGENT_INFO, *PCLS_AGENT_INFO;

typedef struct
    {
        CLS_SWITCH_ID       lSwitchId;      //  Identification of switch 
where agent is defined
        CLS_AGENT_ID        lAgentId;       //  A number identifying the 
trader/agent
        CLS_STATION_EX      cStation;       //  Directory/Extension or 
desk number for station/turret
        CLS_AGENT_STATE     lNewState;      //  A code indicating the 
new agent state
  CLS_AGENT_NAME      cAgentName;
  char                Reserved[79];
    }
        CLS_AGENT_ACTIVITY,*PCLS_AGENT_ACTIVITY  ;


[StructLayout(LayoutKind.Sequential)]
      public struct CLS_AGENT_ACTIVITY
    {
      public Int32    lSwitchId;
      public Int32        lAgentId;
      [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=21 )]
      public string    cStation;
      public Int32    lNewState;
      [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=21 )]
      public string    cAgentName;
      [ MarshalAs( UnmanagedType.ByValTStr, SizeConst=80 )]
      public string    Reserved;
    }
    [StructLayout(LayoutKind.Sequential)]
      public struct CLS_AGENT_INFO
      {
        public  Int32 numOfLogins;
        public  CLS_AGENT_ACTIVITY LoggedAgents;

Hab hier zwei Structuren in C++ welche für Funktionsaufrufe verwendet 
werden und in einer DLL eingebunden sind.
Ich muß nun diese Strukturen in C# definieren und verwenden, das 
funktioniert nicht 100%.
Wie definiere ich das Array mit 5 Strukturen pAgentInfo[5] in der 
Struktur CLS_AGENT_INFO in C# ?
Ich bekomm es nur hin da eine Struktur hinzubiegen, das Array schaff ich 
nicht. HILFE!!

Für jede Hilfe bin ich vorab sehr dankbar, hab im Internet nichts 
gefunden.

Gruss
Thomas

von Ralf (Gast)


Lesenswert?

Hi Thomas,

kannst du noch n bisschen mehr Info geben? WAS geht nicht? Lässt es sich 
nicht kompilieren, oder verhält es sich einfach nur nicht, wie du es 
gerne hättest?

Ralf

von Markus V. (valvestino)


Lesenswert?

Hi Thomas!

Versuche es doch mal damit:
1
    public struct CLS_AGENT_INFO {
2
        public Int32 numOfLogins;
3
        public CLS_AGENT_ACTIVITY[] LoggedAgents;
4
5
        public CLS_AGENT_INFO( Int32 numOfLogins ) {
6
            this.numOfLogins = numOfLogins;
7
            LoggedAgents = new CLS_AGENT_ACTIVITY[5];
8
        }
9
    }
Der Hintergrund ist folgender: In C# werden structs fast wie Klassen 
behandelt. Du kannst also auch Konstruktoren für structs definieren, in 
manchen Fällen musst Du sogar Konstruktoren verwenden.

Gruß
Markus

von Thomas (Gast)


Lesenswert?

Danke sehr, das hat geholfen.
Ich war ein Paar Tage offline.
Was nicht funktionierte hat sich nachher als ein Problem ganz waonders 
herausgestellt.

Besten Dank nochmals,
Gruss
Thomas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.