none
une référence qui n'est pas appliquée RRS feed

  • Question

  • bonjour

    Je butte sur la définition de form1

    #ifndef OPENAFILE_H
    #define OPENAFILE_H
    #pragma once
    
    namespace SpecificationChecker {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    
    	/// <summary>
    	/// Description résumée de OpenAFile
    	/// </summary>
    	public ref class OpenAFile : public System::Windows::Forms::Form
    	{
    	public:
    		Form^ form1;
    		OpenAFile::OpenAFile(void);
    		OpenAFile::OpenAFile(Form^ form1);
    		System::Windows::Forms::OpenFileDialog^  openFileDialog1;
    		System::Windows::Forms::ListBox^  listBox1;
    		System::ComponentModel::Container ^components;
    	protected:
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		OpenAFile::~OpenAFile();
    	private:
    		void OpenAFile::InitializeComponent(void);
    		System::Void OpenAFile::openFileDialog1_FileOk(System::Object^  sender, System::ComponentModel::CancelEventArgs^  e);
    		System::Windows::Forms::Button^  button1;
    		System::Windows::Forms::Button^  button2;
    		System::Windows::Forms::Button^  button3;
    		System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e);
    		System::Void button2_Click_1(System::Object^  sender, System::EventArgs^  e);
    		System::Void button3_Click_1(System::Object^  sender, System::EventArgs^  e);
    	};
    }
    #endif

    il est défini dans l'include et référencé dans deux méthodes:
    	System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e)
    	{
    		// Open a file
    		// on récupère le numero de la ligne sélectionnée
    		System::String^ line;
    		form1->listBox1->GetItemText( line)	
    	}
    	
    	System::Void button2_Click_1(System::Object^  sender, System::EventArgs^  e)
    	{
    		// Cancel
    		form1->Close();
    	}

    mais le compilateur n'aime pas

    >OpenAFile.cpp(146): error C2227: la partie gauche de '->listBox1' doit pointer vers un type class/struct/union/générique
    1>          le type est ''unknown-type''
    1>OpenAFile.cpp(146): error C2227: la partie gauche de '->GetItemText' doit pointer vers un type class/struct/union/générique
    1>OpenAFile.cpp(147): error C2143: erreur de syntaxe : absence de ';' avant '}'
    1>OpenAFile.cpp(152): error C2065: 'form1' : identificateur non déclaré
    1>OpenAFile.cpp(152): error C2227: la partie gauche de '->Close' doit pointer vers un type class/struct/union/générique
    1>          le type est ''unknown-type''

    comment faire la déclaration pour qu'elle soit vue?


    Jean Noël Martin

    lundi 21 juillet 2014 22:33

Réponses

  • Vous avez bien remplacé 

    System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e)

    par 

    System::Void OpenAFile::button1_Click_1(System::Object^  sender, System::EventArgs^  e)
    et le message d'erreur est le même ?

    • Marqué comme réponse JeanNoel53 mercredi 23 juillet 2014 04:40
    mardi 22 juillet 2014 20:34

Toutes les réponses

  • Bonjour,

    Votre classe OpenAFile est désormais votre formulaire à part entière !

    Vous n'avez pas besoin de déclarer form1. Votre code doit être celui-ci :

    System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e)
    {
    	// Open a file
    	// on récupère le texte sélectionné
    	String^ line = (String^)listBox1->SelectedItem;
    }
    	
    System::Void button2_Click_1(System::Object^  sender, System::EventArgs^  e)
    {
    	// Cancel
    	this->Close();
    }

    Bien cordialement,


    Fabrice JEAN-FRANCOIS, Novencia TS

    mardi 22 juillet 2014 12:35
  • J'ai donc codé

    	System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e)
    	{
    		// Open a file
    		// on récupère le numero de la ligne sélectionnée
    		String^ line = (String^)listBox1->SelectedItem;	
    	}
    	
    	System::Void button2_Click_1(System::Object^  sender, System::EventArgs^  e)
    	{
    		// Cancel
    		this->Close();
    	}

    et le compilateur m'a répondu:

    1>OpenAFile.cpp(137): error C2065: 'listBox1' : identificateur non déclaré
    1>OpenAFile.cpp(137): error C2227: la partie gauche de '->SelectedItem' doit pointer vers un type class/struct/union/générique
    1>          le type est ''unknown-type''
    1>OpenAFile.cpp(143): error C2355: 'this' : ne peut être référencé qu'à l'intérieur de fonctions membres non static
    1>OpenAFile.cpp(143): error C2227: la partie gauche de '->Close' doit pointer vers un type class/struct/union/générique
    1>


    Jean Noël Martin

    mardi 22 juillet 2014 13:46
  • Pourriez-vous svp mettre le nom des classes en résolution de portée devant les méthodes.

    Ce qui devrait vous donner ceci :

    System::Void OpenAFile::button1_Click_1(System::Object^  sender, System::EventArgs^  e)
    {
    	// Open a file
    	// on récupère le numero de la ligne sélectionnée
    	String^ line = (String^)listBox1->SelectedItem;	
    }
    	
    System::Void OpenAFile::button2_Click_1(System::Object^  sender, System::EventArgs^  e)
    {
    	// Cancel
    	this->Close();
    }

    Si ça ne compile pas, pensez à utiliser le nom de namespace en haut de votre fichier cpp, après les includes.

    Vous devriez avoir en haut de votre fichier qqc du genre :

    #include "stdafx.h"
    #include "Form1.h"
    
    using namespace SpecificationChecker ;

    Bien cordialement,


    Fabrice JEAN-FRANCOIS, Novencia TS

    mardi 22 juillet 2014 18:42
  • Voila l'en_tête mis a jour

    #include "StdAfx.h"
    #include "AlignStructure.h"
    #include "Macro.h"
    #include "Message.h"
    #include "EnumerationM.hpp"
    #include "StructureM.h"
    #include "TypeDefs.hpp"
    #include "TypeDefsM.hpp"
    #include "POSM.h"
    #include "ClasseAlignerManaged.hpp"
    #include "Database.h"
    #include "SchedulerGlobal.hpp"
    #include "Form1.h"
    #include "OpenAFile.h"
    
    
    
    namespace SpecificationChecker
    {
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    	using namespace std;
    	using namespace SpecificationChecker;
    ca ne compile pas mieux


    Jean Noël Martin

    mardi 22 juillet 2014 19:02
  • Vous avez bien remplacé 

    System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e)

    par 

    System::Void OpenAFile::button1_Click_1(System::Object^  sender, System::EventArgs^  e)
    et le message d'erreur est le même ?

    • Marqué comme réponse JeanNoel53 mercredi 23 juillet 2014 04:40
    mardi 22 juillet 2014 20:34