PDA

Visualizza la versione completa : [WIN32 C++] Errore applicazione win32


Bruce5000
16-10-2009, 12:34
Ciao ho un'applicazione win32 (sto seguendo il libro "Programming Windows" di Petzold);
quando compilo mi da questo errore "error C2440: '=': impossibile convertire da 'void *' a 'TCHAR *'"
in questa riga:
"pVarNome = calloc(iLunghezza + 1, sizeof(TCHAR));"
Uso Visual C++ 2008 Express edition, questa la funzione in cui inserita quella riga:


void RiempiListBox(HWND hwndList)
{
int iLunghezza;
TCHAR *pVarBlocco, *pVarInizio, *pVarFine, *pVarNome;

//ottiene un puntatore a un blocco di memoria che contiene tutti i nomi e i valori delle variabili di ambiente
pVarBlocco = GetEnvironmentStrings();

while (*pVarBlocco)
{
if (*pVarBlocco != '=') //salta i nomi di variabili che iniziano con '='
{
pVarInizio = pVarBlocco; //inizio dei nomi di variabili
while (*pVarBlocco++ != '='); //scansiona fino a '='
pVarFine = pVarBlocco - 1; //punta al segno '='
iLunghezza = pVarFine - pVarInizio; //lunghezza del nome di variabile

pVarNome = calloc(iLunghezza + 1, sizeof(TCHAR)); //alloca memoria per il nome di variabile e che termina con zero;
CopyMemory(pVarNome, pVarInizio, iLunghezza * sizeof(TCHAR)); //copia il nome di variabile e aggiunge uno zeroAA
pVarNome[iLunghezza] = '\0';

SendMessage(hwndList, LB_ADDSTRING, 0, (LPARAM)pVarNome); //mette il nome di variabile nella list box (aggiunge ogni stringa nella list box)
free(pVarNome); //libera la memoria
}
while (*pVarBlocco++ != '\0'); //scansiona fino allo zero terminante
}
FreeEnvironmentStrings(pVarBlocco);
}

shodan
16-10-2009, 12:41
In C++ obbligatorio usare un cast per malloc, calloc e realloc


pVarNome = (TCHAR*) calloc(iLunghezza + 1, sizeof(TCHAR));

Bruce5000
16-10-2009, 20:31
Ti ringrazio per la risposta.

Loading