Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    216

    [WIN32 C++] Errore applicazione win32

    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:
    codice:
    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);
      }

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    In C++ è obbligatorio usare un cast per malloc, calloc e realloc
    codice:
    pVarNome = (TCHAR*) calloc(iLunghezza + 1, sizeof(TCHAR));
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    216
    Ti ringrazio per la risposta.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.