|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
[C++] Inizializzazione variabile unsigned char*
Salve ragazzi,
mi sapreste dire come si inizializza una variabile unsigned char*? ho provato a fare UCHAR* stringa= "ciao";(UCHAR è defiito mediante #define) ma mi dice che è una conversione invalida da "const char*" ad "unsigned char*". Se faccio UCHAR* stringa = 0; non mi da' errori. E quando e perchè lo si usa al posto di char*? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per le stringhe si usa char *, non unsigned char *...
Solitamente si usa unsigned char per contenere valori numerici (non sotto forma di stringa, ma proprio come interi). |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Però quando gli assegno un valore diverso dallo zero mi da' problemi.
Tuttavia, ho ora visto che se gli si assegnano valori esadecimali non da' problemi, esempio: UCHAR stringa = 0x0B; così va bene. |
|
|
|
|
|
#4 | |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
Quote:
Codice:
unsigned char *str = reinterpret_cast<unsigned char *>(0x0B); Non è che intendi inizializzare una stringa Wide? Codice:
wchar_t *str = L"ciao!"; |
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Sì,
a compilare compila e anche l'exe non mi da' problemi. Io ho fatto questa definizione: UCHAR ucCmd = 0x0B; e non ho problemi. Rileggendo mi sono reso conto che nel post precedente non sono stato coerente rispetto al primo. Nel primo chiedevo di: UCHAR* stringa= "ciao"; nel secondo ho scritto solo di: UCHAR stringa = 0x0B; (non puntatore) il fatto è che il mio compilatore (ambiente dev-c++) compila perchè le istruzioni sono queste: UCHAR ucCmd = 0x0B; UCHAR* ucrespdata = &ucCmd; facendo così va bene. Scusa...ma cos'è una stringa Wide? Grazie comunque. |
|
|
|
|
|
#6 | ||
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
Quote:
Quote:
Ciao |
||
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Grazie.
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Mi spieghi che senso ha inizializzare ad un valore numerico un puntatore a unsigned char ? A meno che tu non voglia operare a bassisimo livello...
Cosa ci devi fare con quel puntatore ? |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 68
|
Serve per richiamari una funzione dalla DLL di un reader (lettore di tag RFID)!
Il valore esadecimale è quello corrispondente alla funzione da chiamare. |
|
|
|
|
|
#10 |
|
Registered User
Iscritto dal: Feb 2008
Messaggi: 77
|
Ho capito, il valore è l'identificativo numerico del metodo...
Allora prova così (devi però conoscere il prototipo della funzione da chiamare e definirlo in MIA_FUNZ): Codice:
HINSTANCE pLib = LoadLibrary("Mia_Libreria.dll");
if(pLib) {
typedef [tipo di ritorno] (*MIA_FUNZ)([parametri]);
MIA_FUNZ hProc = (MIA_FUNZ)GetProcAddress(pLib, MAKEWORD(0x0B,0));
if(hProc ) {
hProc(......);
}
FreeLibrary(pLib);
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:44.




















