[C++] Pointer en LPByte

Pagina: 1
Acties:

  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 19-05 12:01
Ik ben bezig aspi programmeren en daar gebruiken ze een pointer om een waarde aan te wijzen. Deze is gedeclareerd als LPByte. Ik heb op internet gevonden dat LP staat voor Long Pointer.
Nu wil ik een pointer laten verwijzen naar het begin van een array waar een tiental waardes instaan. Deze waardes moeten worden verstuurd naar de apsi laag maar dat terzeide.
Nu kan ik wel een adresteken gebruiken maar als ik deze gebruik krijg ik een foutmelding:
C++:
1
[C++ Error] SCSImainprog.cpp(1002): E2034 Cannot convert 'unsigned char ( *)[25]' to 'unsigned char *'


De array is als volgt gedeclareerd: BYTE byInquiry[25];

Heeft iemand een idee hoe ik het begin adres wel kan aanwijzen :?

Exploring the world by bicycle! cyclingsilk.wordpress.com


  • Nvidiot
  • Registratie: Mei 2003
  • Laatst online: 11-01 23:32

Nvidiot

notepad!

Tipje: post eens wat relevante code ? De error is wel aardig, maar zonder de bijbehorende code zegt het niet zo gek veel...

What a caterpillar calls the end, the rest of the world calls a butterfly. (Lao-Tze)


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

gewoon byInquiry doorzenden ipv &byInquiry...

een tabel is zowiezo een pointer naar het eerste element van de tabel, dus is het adresteken niet nodig

ASSUME makes an ASS out of U and ME


  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 19-05 12:01
C++:
1
2
3
4
byModeselect[0]=  0;
byModeselect[1]=  0;
byModeselect[2]= 0x10;
byModeselect[3]= 0x08;

Verderop wordt het volgende gedaan:
C++:
1
2
3
 srbExec.SRB_BufLen     = 12;     // Define length of data (in bytes)

 srbExec.SRB_BufPointer = &byModeselect;

Dit laatste vult een struct in ASPI.

edit: byInquiry is gelijk aan byModeselect.

[ Voor 8% gewijzigd door IJnte op 27-10-2004 14:46 ]

Exploring the world by bicycle! cyclingsilk.wordpress.com


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zie de reactie van HIGHGuY, je moet die & voor byModeSelect even weghalen (byModeSelect is een array en dus impliciet converteerbaar naar een pointer naar het eerste element van de array, het adres van byModeSelect opvragen heeft dan ook verkeerde resultaten)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Darkvater
  • Registratie: Januari 2001
  • Laatst online: 26-08-2024

Darkvater

oh really?

Of je doet gewoon :) :
code:
1
srbExec.SRB_BufPointer = &byModeselect[0];


Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge


Verwijderd

Darkvater schreef op 27 oktober 2004 @ 15:27:
Of je doet gewoon :) :
code:
1
srbExec.SRB_BufPointer = &byModeselect[0];
Dat is niet de code van TS zelf, als ik het goed begrijp. Dus TS, dat stukje code onaangepast laten, maar op de plaats waar jij een functie aanroept met &byInquiry, het &-teken weghalen :)
.oisyn schreef op 27 oktober 2004 @ 15:23:
Zie de reactie van HIGHGuY, je moet die & voor byModeSelect even weghalen (byModeSelect is een array en dus impliciet converteerbaar naar een pointer naar het eerste element van de array, het adres van byModeSelect opvragen heeft dan ook verkeerde resultaten)
Mwaaah praat niet zo moeilijk, dit is dus wel de reden dat ik c++ 2 jaar links heb laten liggen ;) Hier, deze tutorial heeft het voor mij opgehelderd:
http://pw1.netcom.com/~tjensen/ptr/pointers.htm :)

[ Voor 44% gewijzigd door Verwijderd op 27-10-2004 15:54 ]


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Darkvater heeft precies gelijk, byModeselect[0] is het eerste element en dus is &byModeselect[0] het adres van het eerste element.

HIGHGuY gebruikt een shortcut; wat hij schrijft (alleen byModeselect) is iets anders maar in deze context komt het feitelijk op hetzelfde neer. De compiler ziet dat het type verschilt, en plakt er zelf de &[0] aan vast.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • IJnte
  • Registratie: Juni 2003
  • Laatst online: 19-05 12:01
Thnx. De oplossing van het weghalen van het & teken was de oplossing van mijn probleem. Echter ik had ook nog data verkeerd gealloceerd dus vandaar dat ie et ook niet gedaan heeft.

Nog bedankt voor die site over pointers. Ook deze site zal ik even goed doorlezen _/-\o_

Exploring the world by bicycle! cyclingsilk.wordpress.com

Pagina: 1