none
Conversion String vers LPTSTR en C++ RRS feed

  • Question

  • Bonjour, j'ai besoin d'aide pour une conversion comme indiqué dans le titre du post. Je précise que je suis débutant en C++ et que c'est loin d'être mon langage de prédilection^^.

    Dans mon code je ne définis pas l’UNICODE et mon objectif est donc de convertir un paramètre String en LPTSTR soit en TCHAR* .

    J’utilise MFC pour faire de l’Automation Excel et j’ai besoin d’un LPTSTR pour appeler la fonction :

    MyBooks.Open(lptstr_file_path, VOptional, COleVariant((short)1), //(short)1 = Read only VOptional, VOptional, VOptional, VOptional, VOptional, VOptional,

                  VOptional, VOptional, VOptional, VOptional, VOptional, VOptional);

    Où ‘lptstr_file_path est une variable récupérée dans un champ texte. Je fais déjà :

    lptstr_file_path = (TCHAR*)string_file_path.c_str();

    Cependant il y a un problème d’encodage parce que MFC me renvoie une erreur à l’exécution du style : Le fichier ‘{suite de caractère indéchiffrable}’ n’est pas accessible.

    Voilà, si quelqu’un sait comment m’aider, merci d’avance, j’en ai vraiment marre de perdre du temps sur quelque chose d’aussi trivial visiblement.

    vendredi 1 août 2014 10:12

Réponses

  • Finalement j'ai trouvé la solution. C'est assez simple en plus :

    complete_file_path = [votre string/variable].c_str();

    lptstr_file_path = complete_file_path.GetBuffer(complete_file_path.GetLength());

    //on relâche le buffer

    complete_file_path.ReleaseBuffer(-1);

    • Marqué comme réponse The_Grudge53 lundi 4 août 2014 12:55
    lundi 4 août 2014 12:54

Toutes les réponses

  • Je précise que je m'y prend peut-être de la mauvaise manière pour ouvrir un tableur Excel avec une variable en tant que chemin d'accès. Donc mon vrai problème n'est peut-être pas de convertir le String en LPTSTR^^ avis aux experts :D
    vendredi 1 août 2014 10:15
  • Finalement j'ai trouvé la solution. C'est assez simple en plus :

    complete_file_path = [votre string/variable].c_str();

    lptstr_file_path = complete_file_path.GetBuffer(complete_file_path.GetLength());

    //on relâche le buffer

    complete_file_path.ReleaseBuffer(-1);

    • Marqué comme réponse The_Grudge53 lundi 4 août 2014 12:55
    lundi 4 août 2014 12:54
  • Depuis Office 2007, le format des fichiers Office n'est plus propriétaire.

    Il est donc possible de générer des fichiers XLSX sans avoir d'Excel sur la machine ni de faire de l'Automation pour cela.

    Il existe un certain nombre de SDK plus ou moins pratique en fonction du langage et des framework utilisés pour générer un fichier XLSX.

    Si vous utilisez les MFC, les MACRO type A2T devraient être accessibles.

    http://msdn.microsoft.com/fr-fr/library/87zae4a3.aspx


    Paul Bacelar, Ex - MVP VC++

    lundi 11 août 2014 14:02
    Modérateur