Einzelnen Beitrag anzeigen

Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Type-Deklaration PF_INTERFACE_STATS (MSDN-PlattformSDK:

  Alt 19. Jun 2005, 19:20
Das ist ein bischen tricky. In C kann man am Ende eines Record ein Array der Laenge Null deklarieren.
Das nimmt dann keinen Platz im Record ein, sondern benennt den Bereich hinter dem Record.
In C liefert dann auch noch der Name eines Arrays den Zeiger auf das erste Element des Arrays.
InterfaceStats.FilterInfo ist also in C ein Zeiger hinter InterfaceStats.
Zeiger in C sind direkt mit dem Arrayindex zu benutzen. Da es keine Checks fuer Arrayzugriffe erfolgen,
kann man einfach die Elemente des FilterInfo-Arrays zugreifen. Wie viele es sind steht im Record.

Microsoft verwendet die Laenge 1 was keinerlei praktische Auswirkungen hat. Es erklaert nur das erste Element des FilterInfo-Arrays zum Teil des Records.

Wenn FilterInfo als array [0..0] deklariert ist, kann man auch in Delphi auf die FilteRInfo-Elemente zugreifen.
Man muss nur den Check der Arraygrenzen abschalten.
  Mit Zitat antworten Zitat