Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-02-2008, 11:15   #1
register
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.
register è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 11:39   #2
cionci
Senior Member
 
L'Avatar di cionci
 
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).
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 11:54   #3
register
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.
register è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 12:13   #4
kernel::panic
Registered User
 
Iscritto dal: Feb 2008
Messaggi: 77
Quote:
Originariamente inviato da register Guarda i messaggi
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.
Sei sicuro che compili? Che compilatore usi? Il fatto è che tu stai cercando di inizializzare un puntatore ad una locazione di memoria decisa da te... potrebbe compilare se scritto così (ma non avrebbe senso comunque):

Codice:
unsigned char *str = reinterpret_cast<unsigned char *>(0x0B);

Non è che intendi inizializzare una stringa Wide?

Codice:
wchar_t *str = L"ciao!";
Ciao
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 12:24   #5
register
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.
register è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 12:31   #6
kernel::panic
Registered User
 
Iscritto dal: Feb 2008
Messaggi: 77
Quote:
Originariamente inviato da register Guarda i messaggi
Sì,

il fatto è che il mio compilatore (ambiente dev-c++) compila perchè le istruzioni sono queste:

UCHAR ucCmd = 0x0B;
UCHAR* ucrespdata = &ucCmd;
In questo caso attribuisci a ucCmd un valore numerico (non stringa) ucrespdata il puntatore alla memoria occupata da ucCmd.

Quote:
Scusa...ma cos'è una stringa Wide?
http://en.wikipedia.org/wiki/Wchar_t


Ciao
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 12:51   #7
register
Member
 
Iscritto dal: Feb 2008
Messaggi: 68
Grazie.
register è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 14:20   #8
cionci
Senior Member
 
L'Avatar di cionci
 
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 ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 17:45   #9
register
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.
register è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2008, 18:34   #10
kernel::panic
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); 
}
Oppure più semplicemente cerca l'SDK della libreria dove troverai i .h da includere
kernel::panic è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Motorola conferma l'arrivo del nuovo Edg...
Smascherata la truffa dei finti SSD da 1...
Xiaomi 18 Pro: chip a 2 nm, Privacy Disp...
Il 71% degli autovelox italiani era fuor...
La Cina svela descrive la sua arma a mic...
Le 12 offerte Amazon TOP del weekend: ai...
Mini proiettore portatile a 36,99€: otti...
RTX 5070 a 599€ e RTX 5060 Ti a 357€, do...
In Cina il mega-impianto solare a sali f...
Xiaomi Air Fryer Essential 6L: ha tutto ...
Apple riduce la produzione di iPhone 17:...
Lancio del razzo spaziale cinese Lunga M...
SpaceX Starship: Super Heavy Booster 20 ...
Questa RTX 3070 è tornata in vita...
Un ricercatore scopre uno script bash na...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 09:46.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v