Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    17

    HELP Visual C++ CString / const char*

    Ciao a tutti!

    Per la mia tesi di laurea sto programmando con il Visual c++ e, anche servendomi della guida, non riesco a risolvere un problema di programmazione:

    Io ho una variabile di tipo CString e devo trasformarla in un puntatore a vettore di caratteri.
    Ovvero devo passare dal tipo CString al tipo const char*.

    Questa operazione mi è indispensabile perchè devo utilizzare la funzione fopen per aprire un file e questa funzione nell'embedded visual c++ (ambiente in cui io lavoro) accetta come parametro in ingresso il path del file da aprire SOLO se di tipo cons char*.

    Spero che qualcuno di voi possa aiutarmi perchè attualmente sono bloccata e non posso continuare il mio lavoro.

    Grazie.

    Ciao a tutti
    Claudia

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    come leggo da qui:
    http://msdn.microsoft.com/library/de...fc_cstring.asp
    You can freely substitute CString objects for const char* and LPCTSTR function arguments.
    con le string cmq basta concatenare alla tua stringa il "null terminator", ovvero il carattere '\0'.
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    17
    Il link che mi hai mandato è quello della guida microsoft.
    Io ho già provato ad applicare la funzione di cui parla e non mi da errori nella compilazione ma una volta eseguito il programma non mi apre il file!

    Questo perchè, stampando il path del file che la funzione LPCTSTR ha trasformato da CString a cons char* viene fuori un vettore di caratteri dove ogni carattere della stringa è separato da uno spazio bianco.

    Cioè non mi risulta ad esempio un vettore di caratteri:

    c:\documenti\config.prs

    ma:

    c : \ d o c u m e n t \ c o n f i g . p r s

    e questo è un cammino non valido per aprire il file.
    Io credo che la causa sia nella trasformazione da un tipo di dati a 16 bit ad un altro a 32 bit.

    Insomma, devo trovare un altra soluzione per ottenere da una variabile di tipo CString una di tipo const char*, in modo di ottenere un path che possa essere aperto dalla funzione fopen.

    Spero di non aver fatto casino ed essere stata abbastanza chiara.
    In ogni caso grazie.
    Claudia

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    Io credo che la causa sia nella trasformazione da un tipo di dati a 16 bit ad un altro a 32 bit.
    si credo anch'io.
    Penso che il problema sia nel fatto che con CString i caratteri sono in UNICODE, ovvero sono riservati 2 byte per memorizzare il char, mentre nel normale sistema (SBSC, quello del classico C per intenderci) i caratteri sono memorizzati in un solo byte.
    Quello che credevo era però che nel carattere UNICODE il secondo byte fosse messo a '\0', che per il normale sistema equivale al "terminatore" di array di caratteri (non uno spazio).

    Sono quasi sicuro che esista una qualche macro che ti converte la stringa in UNICODE (o cmq in TCHAR) in un vettore di char.
    Cerca nelle macro di conversione, probabilmente troverai qualcosa.

    ciauz
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

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.