Seite 3 von 3

Verfasst: 24.08.2005 14:25
von Ynnus
Deeem2031 hat geschrieben: lalala, lalala, lalala lala la... Man, ist hier öde, und das Vorenlaiout ist auch plöd
Lustig, was man alles mit falschen Zitaten machen kann, nicht? :mrgreen:

Verfasst: 25.08.2005 22:45
von Laurin
Wieder ein Problem :(

Code: Alles auswählen

DisplayIdInfo((PIDSECTOR) ((PSENDCMDOUTPARAMS)IdOutCmd)->bBuffer,
					&scip,
					bIDCmd,
					bDfpDriveMap,
					i);

VOID DisplayIdInfo(PIDSECTOR pids, PSENDCMDINPARAMS pSCIP, BYTE bIDCmd, BYTE bDfpDriveMap, BYTE bDriveNum)
Mir geht es dabei um (PIDSECTOR) ((PSENDCMDOUTPARAMS)IdOutCmd)->bBuffer. PIDSECTOR und PSENDCMDOUTPARAMS sind Pointer zu Strukturen. Erstere ist nicht gefüllt, zweitere schon. IdOutCmd ist eine Variable mit der Struktur die hinter dem Pointer PSENDCMDOUTPARAMS steht. In der aufgerufenen Funktion ist PIDSECTOR plötzlich mit gefüllt.

Kann mir einer sagen warum? Ich kapier das nicht.

Verfasst: 26.08.2005 00:01
von Laurin
Zusatz:
Ich habe jemanden gefragt, der sich in C++ auskennt. Und er hat Folgendes gesagt:
die variable IdOutCmd (ein pointer) wird auf (PSENDCMDOUTPARAMS) gecasted, dann wird das array-feld bBuffer refenziert und auf PIDSECTOR gecasted
Wörterbuch?

Verfasst: 26.08.2005 00:07
von Deeem2031
Ich versuchs mal:

Also du hast ja deine Structure IdOutCmd, diese enthält anscheinend eine Variable bBuffer, die dann einfach für den PIDSECTOR-Parameter benutzt wird. Also brauchst du eigentlich nur IdOutCmd\bBuffer an die Proc geben.

Verfasst: 26.08.2005 00:19
von Laurin
Nein, ganz anders und komplizierter.
Ohne die Hilfe des einen Jungen, den ich oben zitiert habe, wäre ich da nie drauf gekommen.

Also IdOutCmd wird zum Pointer von der (mit Daten gefüllten) Struktur PSENDCMDOUTPARAMS. Dann wird der Pointer zu bBuffer ermittelt. bBuffer ist ein Teil der Struktur PSENDCMDOUTPARAMS. bBuffer ist auch das erste Byte eines Arrays, dass noch völlig ohne Struktur ist. Diesem Array wird die Struktur PIDSECTOR aufgezwungen, damit man die Daten abfragen kann.

Sau kompliziert. Wer denkt schon daran, dass da plötzlich ein Array auftaucht, von dem man nur das erste Byte hat. *ts ts*

Ich denke mal, nicht alle haben meine Erklärung verstanden. Das macht nichts, Hauptsache ich weiß es :lol:

Verfasst: 26.08.2005 00:27
von Deeem2031
War es nicht das was ich versucht hab zu sagen..? /:->

Verfasst: 26.08.2005 00:50
von Laurin
Nein nicht ganz. ;)

bBuffer ist nur das erste Byte eines Arrays, dass da einfach rangehangen wird. Ich muss wohl eine Struktur erweitern, damit dass Array da gleich mit einbezogen wird.

Verfasst: 26.08.2005 00:54
von Deeem2031
Also @IdOutCmd\bBuffer :?: Dachte eigentlich bBuffer wär schon ein Pointer...

Verfasst: 26.08.2005 01:05
von Laurin
Nein, bBuffer ist das erste Byte des Arrays. Und ein 1-Byte-großer Pointer gibts net ^^ (na gut, das konntest du nicht wissen).