IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

error C2065: 'FILE' : identificateur non déclaré Comment corriger cette erreur ?


Sujet :

Visual C++

  1. #1
    Membre éclairé
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Par défaut error C2065: 'FILE' : identificateur non déclaré Comment corriger cette erreur ?
    Bonjour,

    Ma configuration :
    OS Windows 2000 Pro
    Visual C++ 2005 Express
    Windows® Server 2003 SP1 Platform SDK

    But :
    J'essai de remplacer l'utilisation de MFC par l'API Win32 dans une DLL.

    Soit un extrait de code de la DLL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	char filename[ 256 ];
    	FILE *fh;
    	int  iLines = 0;
    Erreur à la compile :

    k:\adkwin32\asciiwin32\plugin.cpp(90) : error C2065: 'FILE' : identificateur non déclaré
    FILE ça vient d'ou ?

    Comment corriger cette erreur ?

    J'ai fais une recherche dans l'aide avec le mot FILE, je n'ai rien trouvé.

    Le projet complet

    Merci,

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    #include <stdio.h> ?

    (ou bien #include <cstdio> si tu compiles en C++).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Par défaut
    Merci.

  4. #4
    Membre éclairé
    Avatar de Pierre8r
    Homme Profil pro
    Inscrit en
    Octobre 2004
    Messages
    518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 518
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    #include <stdio.h> ?

    (ou bien #include <cstdio> si tu compiles en C++).

    Pour être du C++ l'extension .cpp au fichier ne suffit pas ?

    Ce fichier c'est du C ou du C++ ?


    ////////////////////////////////////////////////////
    // Plugin.cpp
    // Standard implementation file for all AmiBroker plug-ins
    //
    // Copyright (C)2001-2002 Tomasz Janeczko, amibroker.com
    // All rights reserved.
    //
    // Last modified: 2002-03-11 TJ
    //
    // You may use this code in your own projects provided that:
    //
    // 1. You are registered user of AmiBroker
    // 2. The software you write using it is for personal, noncommercial use only
    //
    // For commercial use you have to obtain a separate license from Amibroker.com
    //
    ////////////////////////////////////////////////////

    #include "stdafx.h"
    #include "ASCIIWin32.h"
    #include "Plugin.h"
    #include "stdlib.h"
    #include "stdio.h"


    // These are the only two lines you need to change
    #define PLUGIN_NAME "ASCII sample data Plug-in"
    #define VENDOR_NAME "Amibroker.com"
    #define PLUGIN_VERSION 10000
    #define PLUGIN_ID PIDCODE( 'A', 'S', 'C', 'I' )

    #define THIS_PLUGIN_TYPE PLUGIN_TYPE_DATA

    ////////////////////////////////////////
    // Data section
    ////////////////////////////////////////
    static struct PluginInfo oPluginInfo =
    {
    sizeof( struct PluginInfo ),
    THIS_PLUGIN_TYPE,
    PLUGIN_VERSION,
    PLUGIN_ID,
    PLUGIN_NAME,
    VENDOR_NAME,
    0,
    387000
    };


    ///////////////////////////////////////////////////////////
    // Basic plug-in interface functions exported by DLL
    ///////////////////////////////////////////////////////////

    PLUGINAPI int GetPluginInfo( struct PluginInfo *pInfo )
    {
    *pInfo = oPluginInfo;

    return TRUE;
    }


    PLUGINAPI int Init(void)
    {
    return 1;
    }

    PLUGINAPI int Release(void)
    {
    return 1; // default implementation does nothing
    }



    PLUGINAPI int Notify(struct PluginNotification *pn)
    {
    // default implementation does nothing

    return 1;
    }

    PLUGINAPI int GetQuotes( LPCTSTR pszTicker, int nPeriodicity, int nLastValid, int nSize, struct Quotation *pQuotes )
    {
    // needed because we will use MFC inside this function
    //AFX_MANAGE_STATE( AfxGetStaticModuleState() );

    // we assume that intraday data files are stored in ASCII subfolder
    // of AmiBroker directory and they have name of <SYMBOL>.AQI
    // and the format of Date(YYMMDD),Time(HHMM),Open,High,Low,Close,Volume
    // and quotes are sorted in ascending order - oldest quote is on the top

    char filename[ 256 ];
    FILE *fh;
    int iLines = 0;

    // format path to the file (we are using relative path)
    sprintf_s( filename, "ASCII\\%s.AQI", pszTicker );

    // open file for reading
    fh = fopen( filename, "r" );

    // if file is successfully opened read it and fill quotation array
    if( fh )
    {
    char line[ 256 ];

    // read the line of text until the end of text
    // but not more than array size provided by AmiBroker
    while( fgets( line, sizeof( line ), fh ) && iLines < nSize )
    {
    // get array entry
    struct Quotation *qt = &pQuotes[ iLines ];

    // parse line contents: divide tokens separated by comma (strtok) and interpret values

    // date and time first
    int datenum = atoi( strtok( line, "," ) ); // YYMMDD
    int timenum = atoi( strtok( NULL, "," ) ); // HHMM

    qt->DateTime.PackDate.Tick = 0;
    qt->DateTime.PackDate.Minute = timenum % 100;
    qt->DateTime.PackDate.Hour = timenum / 100;
    qt->DateTime.PackDate.Year = 100 + datenum / 10000;
    qt->DateTime.PackDate.Month = ( datenum / 100 ) % 100;
    qt->DateTime.PackDate.Day = datenum % 100;

    // now OHLC price fields
    qt->Open = (float) atof( strtok( NULL, "," ) );
    qt->High = (float) atof( strtok( NULL, "," ) );
    qt->Low = (float) atof( strtok( NULL, "," ) );
    qt->Price = (float) atof( strtok( NULL, "," ) ); // close price

    // ... and Volume
    qt->Volume = atoi( strtok( NULL, ",\n" ) );

    iLines++;
    }

    // close the file once we are done
    fclose( fh );

    }

    // return number of lines read which is equal to
    // number of quotes
    return iLines;
    }


    PLUGINAPI int Configure( LPCTSTR pszPath, struct InfoSite *pSite )
    {
    // AFX_MANAGE_STATE is needed because dialog boxes call MFC and use resources
    // similar line should be added to any other function exported by the plugin
    // if only the function calls MFC or uses DLL resources
    //AFX_MANAGE_STATE( AfxGetStaticModuleState() );

    /*
    ** Here a config dialog may be called

    CConfigDlg oDlg;

    oDlg.DoModal();

    **
    */

    //AfxMessageBox("Configure button clicked");

    return 1;
    }

    PLUGINAPI AmiVar GetExtraData( LPCTSTR pszTicker, LPCTSTR pszName, int nArraySize, int nPeriodicity, void* (*pfAlloc)(unsigned int nSize) )
    {
    // default implementation does nothing

    AmiVar var;

    var.type = VAR_NONE;
    var.val = 0;

    return var;
    }

    PLUGINAPI int SetTimeBase( int nTimeBase )
    {
    // only intraday intervals are supported
    return ( nTimeBase < ( 24 * 60 * 60 ) ) ? 1 : 0;
    }

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    Si, ça suffit.

    Et ton code est de toute évidence du C++ utilisant la bibliothèque Microsoft Foundation Classes (MFC).

    Et du mauvais C++, car tu y utilises des fonctions C qui n'ont pas lieu de l'eêtre en C++ :
    • Typiquement, en C++ standard, on n'utilise pas fopen() mais un objet de type std::ofstream.
    • Et typiquement, sous MFC, on n'utilise ni fopen() ni std::ofstream, mais un objet de type CFile ou CStdioFile, selon l'emploi qu'on veut en faire (CStdioFile est plus approprié pour les fichiers texte).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/10/2014, 16h28
  2. Réponses: 2
    Dernier message: 18/02/2009, 11h11
  3. Identificateur non déclaré : 'Null'
    Par Mofid04 dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/03/2006, 11h47
  4. Problème d'identificateur non déclaré
    Par renorx dans le forum Débuter
    Réponses: 3
    Dernier message: 14/11/2005, 20h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo