C++ Befehle

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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:
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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:
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

War es nicht das was ich versucht hab zu sagen..? /:->
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Also @IdOutCmd\bBuffer :?: Dachte eigentlich bBuffer wär schon ein Pointer...
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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).
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Antworten