none
fileexists ne marche pas RRS feed

Réponses

  • C'est juste un problème de marshalling :

    const char* charstr = "Hello, world!";

    String^ clistr = gcnew String(charstr);

    Console::WriteLine(clistr);

    ------------------ IntPtr p = Marshal::StringToHGlobalAnsi(clistr);

    char *pNewCharStr = static_cast<char*>(p.ToPointer());

    cout << pNewCharStr << endl;

    Marshal::FreeHGlobal(p);



    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse JeanNoel53 mardi 15 mai 2012 16:16
    mardi 15 mai 2012 10:28
    Modérateur

Toutes les réponses

  • Vous mélangez un peu tout là.

    Le premier article est sur une commande en ligne de command (dans une console) sur plateforme WinCE (vieille OS, article de 2004 :-( ), pour faire des scripts shell.

    Le second article est sur une des méthodes .NET qui ont été spécifiquement développées pour les développeurs VB pour qu'ils y retrouvent les (mauvaises) habitudes.

    C'est du .NET, donc utilisable par tout les langages .NET, mais celle-ci ne présente aucun avantage pour un C++iste.

    Ce que vous cherchez est dans le Framework .NET de base (si c'est du code managé)

    http://msdn.microsoft.com/fr-fr/library/system.io.file.exists.aspx

    Si c'est pour du code managé, il faudra prendre une autre API, fonction du Framework ou des bibliothèques que vous utilisez.


    Paul Bacelar, Ex - MVP VC++

    • Proposé comme réponse Ciprian Duduiala lundi 14 mai 2012 13:23
    • Marqué comme réponse JeanNoel53 mardi 15 mai 2012 00:02
    • Non marqué comme réponse JeanNoel53 mardi 15 mai 2012 00:37
    • Non proposé comme réponse JeanNoel53 mardi 15 mai 2012 00:37
    lundi 14 mai 2012 09:48
    Modérateur
  • OK c'est clair

    mais pour la mise en œuvre, j'ai une difficulté

    j'ai une chaine en char* et je dois affecter cette variable à une System:String^

    bien entendu le compilateur n'en veut pas

    1>..\..\..\..\DBMS\DBMSManager\src\InterbaseManager.cpp(366): error C2440: '=' : impossible de convertir de 'char *' en 'System::String ^'
    1>          Aucun opérateur de conversion défini par l'utilisateur disponible, ou
    1>          Impossible de convertir un type non managé en type managé


    Jean Noël Martin


    • Marqué comme réponse JeanNoel53 mardi 15 mai 2012 00:02
    • Non marqué comme réponse JeanNoel53 mardi 15 mai 2012 00:33
    • Modifié JeanNoel53 mardi 15 mai 2012 00:37
    mardi 15 mai 2012 00:02
  • C'est juste un problème de marshalling :

    const char* charstr = "Hello, world!";

    String^ clistr = gcnew String(charstr);

    Console::WriteLine(clistr);

    ------------------ IntPtr p = Marshal::StringToHGlobalAnsi(clistr);

    char *pNewCharStr = static_cast<char*>(p.ToPointer());

    cout << pNewCharStr << endl;

    Marshal::FreeHGlobal(p);



    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse JeanNoel53 mardi 15 mai 2012 16:16
    mardi 15 mai 2012 10:28
    Modérateur