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 :

Projet Gestio d'Arrachage de BEtterave avec DGPS et PDA


Sujet :

Visual C++

  1. #1
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Projet Gestio d'Arrachage de BEtterave avec DGPS et PDA
    Bonjour a tous.

    Je suis nouveau ici mais je programme depuis 4ans.
    J'ai débuté sur DEV C++ pour poursuivre dans le cadre de mon BTS IRIS sur Borland C++.

    Après cette brève présentation je vous explique le projet officiel de mon BTS.

    Je dois acquérir des trames venant d'un DGPS pour les traiter sur un PDA enregistrer le début d'arrachage, les temps de pause du conducteur, ainsi que la fin sur un fichier XML.

    Le compilateur utilisé c'est visual studio 2005 avec le langage C++ uniquement (obligaoire dans le cadre du BTS). Ce compilateur est tout nouveau pour moi et j'ai des questions d'abord simplistes puis un peu plus compliquésur mon projet .
    Je vous remercie à l'avance de m'aider car je suis un peu paniqué pour ma note de projet. Je n'ai que 12 semaines pour réaliser mon projet et comprendre les subtilités de visual studio 2005.

    Ma classe qui gère la liaison série en bluetooth. Elle sert à acquérir les trames sur le PDA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class cl_Bluetooth
    {private: 
    HANDLE hcomm;
    DCB serie;
    OVERLAPPED over;
    public:
    cl_Bluetooth(char *Port,int Brate);
    char* lecture (void);
    void modifPARAM (char *Port,int Brate);
    ~cl_Bluetooth(void);
    };
    1°) Comment fait-on pour transformer un String en char* sur visual studio 2005 ?

    2°) la fonction hcomm=CreateFile(Port,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
    if(hcomm==INVALID_HANDLE_VALUE)
    ne passe pas à la compilation du fait que Port est un char* alors qu'il me demande un LPCWSTR comment faire pour convertir les char* ainsi que les String en LPCWSTR sachant que Port est un char* envoyé en paramètre dans la méthode modifPARAM qui utilise cette fonction?


    Définition de la méthode modifPARAM

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    void cl_Bluetooth::modifPARAM (char *port,int vitesse)
    /* Modification des paramètres du port série */
    {
     bool test;
     hcomm=CreateFile(TEXT("COM1"),GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
     if(hcomm==INVALID_HANDLE_VALUE)
      {MessageBox(NULL,TEXT("Impossible d'ouvrire le port choisi"),TEXT("Erreur #001"),MB_ICONSTOP);
      }
     GetCommState (hcomm,serie);
     serie->BaudRate=vitesse;
     serie->ByteSize=8;
     serie->Parity=EVENPARITY;
     serie->StopBits=ONESTOPBIT;
     test=SetCommState (hcomm,serie);
     PurgeComm (hcomm,PURGE_RXCLEAR);
     if (test==false)
       {MessageBox(NULL,TEXT("Impossible d'ouvrire le port choisi"),TEXT("Erreur #002"),MB_ICONSTOP);
       }
    }
    voila pour le début, je vous l'avait dit c simple pour les connaisseur de la suite visual studio mais pour moi qui n'a connu que Borland et DEV cpp, je trouve que visual studio c'est une usin a gaz. A noter que cette discussion se trouve aussi dans le forum C/C++.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    pour convertir char en LPCWSTR , il faut utiliser multiByteToWideChar, il doit y avoir un exemple dans la faq

    et quand tu parles de string ? ce sont les string de la STL ? quel type d'application fais-tu ? Win32 console ?

    (ps : utilise plutot les balises codes)

  3. #3
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut reponse 1
    Merci de ta reponse.
    J'utilise les System::String^

  4. #4
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut PS reponse 1
    Je ne trouve pas la fonction multiByteToWideChar dans visual studio 2005.
    Je précise aussi que c'est une application windows form à laquelle j'ai ajouté une classe.

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ok, dans ce cas, je t'invite à consulter la faq C++/CLI au chapitre conversion http://dotnet.developpez.com/faq/cpp...age=conversion

  6. #6
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Ca marche !!!
    Merci pour cette précieuse aide ca marche!!!
    Je viens d'avoir un autre problème.

    Dans mon Form.h il ne reconnais pas mon objet instancié de la classe cl_Bluetooth.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		cl_Bluetooth *obj();
    		Form1(void)
    		{
    			InitializeComponent(); 
                                               ...
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    			 /* Bouton Valider des paramètres de la liason*/
    	{obj=gcnew cl_Bluetooth ("COM1",9600);
    	 char *Pserie;
    	 int speed;
    	 speed=Convert::ToInt32(comboBox2->Text);
    	 Pserie=static_cast<char *>(System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(comboBox1->Text).ToPointer());
    	 obj.modifPARAM(Pserie,speed);
    };

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    quelle est l'erreur ?

  8. #8
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Question
    Je n'ai plus de problème de déclaration d'objet, mais j'ai des erreurs comme

    cl_Bluetooth.obj : error LNK2028: jeton non résolu (0A00000D) "extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z) référencé dans la fonction "extern "C" int __clrcall MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YMHPAUHWND__@@PB_W1I@Z)


    cl_Bluetooth.obj : error LNK2019: symbole externe non résolu "extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z) référencé dans la fonction "extern "C" int __clrcall MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YMHPAUHWND__@@PB_W1I@Z)


    C:\Documents and Settings\mbignon\Mes documents\projet\module de test3\test_serie\Debug\test_serie.exe : fatal error LNK1120: 2 externes non résolus

    Dans le dossier Debug, le fichier de projet .exe n'y est pas, comment faire pour qu'il en créer un nouveau. Merci

  9. #9
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ben il faut résoudre les erreurs de links

    Je te suggère plutot d'utiliser le messagebox de .Net, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageBox::Show("....");

  10. #10
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Je montre tout
    Je vais faire un petit point la 1ère partie du projet est presque terminé il me reste les 3 erreurs précédemment montrées.
    Donc pour m'aider à les résoudre je vais montrer tout mon code source.

    cl_Bluetooth.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ref class cl_Bluetooth
    {
    private:  
       static HANDLE hcomm;
       static LPDCB serie;
       static LPOVERLAPPED over;
    public:
    	cl_Bluetooth(char *Port,int Brate);
    	char* Lecture (void);
        void modifPARAM (char *Port,int Brate);
    	~cl_Bluetooth(void);
    };
    cl_Bluetooth.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include "stdafx.h"
    #include <windows.h>
    #include "vcclr.h"
    #include <stdlib.h>
    #include <string.h>
    #include "cl_Bluetooth.h"
     
    cl_Bluetooth::cl_Bluetooth(char *Port,int vitesse)
    /* Le constructeur reçoit le port et la vitesse de transfert en paramètre */
    {
     modifPARAM (Port,vitesse);
    }
    //---------------------------------------------------------------------------
    char* cl_Bluetooth::Lecture ()
    /* Lecture des données sur le port */
    {unsigned long pt;
     char* chaine;
     chaine=new char (83);
     ReadFile(hcomm,chaine,82,&pt,over); //lecture du port série
     PurgeComm (hcomm,PURGE_RXCLEAR); // vide le buffer du port
     return chaine; //on retourne la trame NMEA
    }
    //---------------------------------------------------------------------------
    void cl_Bluetooth::modifPARAM (char *Port,int vitesse)
              /* Modification des paramètres du port série */
    {LPWSTR wch;
      bool test;
     WideCharToMultiByte(CP_ACP, 0, wch, 3, Port, 3, NULL, NULL); //conversion de *Port en LPWSTR
     hcomm=CreateFile(wch,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL); //ouvertur du port sélectionné
     if(hcomm==INVALID_HANDLE_VALUE) 
     {System::Windows::Forms::MessageBox::Show(NULL,TEXT("Impossible d'ouvrir le port sélectionné"),TEXT("Erreur #001"),MB_ICONSTOP);
      }
     GetCommState (hcomm,serie); //lecture des paramètre de configuration du port
     serie->BaudRate=vitesse; //début configuration
     serie->ByteSize=8;
     serie->Parity=EVENPARITY;
     serie->StopBits=ONESTOPBIT;
     test=SetCommState (hcomm,serie); //fin de la configuration
     PurgeComm (hcomm,PURGE_RXCLEAR);  //vider le buffer
     if (test==false)
     {MessageBox::Show(NULL,TEXT("Impossible d'ouvrire le port choisi"),TEXT("Erreur #002"),MB_ICONSTOP);
       }
    } 
    //---------------------------------------------------------------------------
    cl_Bluetooth::~cl_Bluetooth ()
                    /* Destructeur */
    {bool test;
     test=PurgeComm (hcomm,PURGE_RXCLEAR);
     if (test==true)
       {test=CloseHandle (hcomm); //fermeture du port
       }
     else
     {MessageBox::Show(NULL,TEXT("Impossible de vider le port com"),TEXT("Erreur #003"),MB_ICONSTOP);
       }
    }
    Form1.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    #pragma once
    #include "StdAfx.h"
    #include <windows.h>
    #include <vcclr.h>
    #include <stdlib.h>
    #include <string.h>
     
    #include "cl_Bluetooth.h"
    namespace test_serie {
     
    	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 Form1
    	///
    	/// AVERTISSEMENT*: si vous modifiez le nom de cette classe, vous devrez modifier la
    	///          propriété 'Nom du fichier de ressources' de l'outil de compilation de ressource managée
    	///          pour tous les fichiers .resx dont dépend cette classe. Dans le cas contraire,
    	///          les concepteurs ne pourront pas interagir correctement avec les ressources
    	///          localisées associées à ce formulaire.
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();	
    			//
    			//TODO*: ajoutez ici le code du constructeur
    			//
    		}
     
    	protected:
    		/// <summary>
    		/// Nettoyage des ressources utilisées.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::ComboBox^  comboBox1;
    	protected: 
    	private: System::Windows::Forms::ComboBox^  comboBox2;
    	private: System::Windows::Forms::Button^  button1;
    	private: System::Windows::Forms::GroupBox^  groupBox1;
    	private: System::Windows::Forms::TextBox^  textBox1;
    	private: System::Windows::Forms::Label^  label1;
    	private: System::Windows::Forms::Button^  button2;
    	private: System::Windows::Forms::GroupBox^  groupBox2;
     
    	private:
    		cl_Bluetooth ^obj;
    	private: System::Windows::Forms::MenuStrip^  menuStrip1;
    	private: System::Windows::Forms::ToolStripMenuItem^  fichierToolStripMenuItem;
    	private: System::Windows::Forms::ToolStripMenuItem^  quitterToolStripMenuItem;
    			 /// <summary>
    		/// Variable nécessaire au concepteur.
    		/// </summary>
    		System::ComponentModel::Container ^components;
     
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas
    		/// le contenu de cette méthode avec l'éditeur de code.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->comboBox1 = (gcnew System::Windows::Forms::ComboBox());
    			this->comboBox2 = (gcnew System::Windows::Forms::ComboBox());
    			this->button1 = (gcnew System::Windows::Forms::Button());
    			this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
    			this->textBox1 = (gcnew System::Windows::Forms::TextBox());
    			this->label1 = (gcnew System::Windows::Forms::Label());
    			this->button2 = (gcnew System::Windows::Forms::Button());
    			this->groupBox2 = (gcnew System::Windows::Forms::GroupBox());
    			this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());
    			this->fichierToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
    			this->quitterToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
    			this->groupBox1->SuspendLayout();
    			this->groupBox2->SuspendLayout();
    			this->menuStrip1->SuspendLayout();
    			this->SuspendLayout();
    			// 
    			// comboBox1
    			// 
    			this->comboBox1->Font = (gcnew System::Drawing::Font(L"Lucida Console", 8.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
    				static_cast<System::Byte>(0)));
    			this->comboBox1->FormattingEnabled = true;
    			this->comboBox1->Items->AddRange(gcnew cli::array< System::Object^  >(8) {L"COM1", L"COM2", L"COM3", L"COM4", L"COM5", L"COM6", 
    				L"COM7", L"COM8"});
    			this->comboBox1->Location = System::Drawing::Point(4, 24);
    			this->comboBox1->Name = L"comboBox1";
    			this->comboBox1->Size = System::Drawing::Size(70, 19);
    			this->comboBox1->TabIndex = 0;
    			this->comboBox1->Text = L"COM1";
    			// 
    			// comboBox2
    			// 
    			this->comboBox2->FormattingEnabled = true;
    			this->comboBox2->Items->AddRange(gcnew cli::array< System::Object^  >(3) {L"4800", L"9600", L"19200"});
    			this->comboBox2->Location = System::Drawing::Point(218, 24);
    			this->comboBox2->Name = L"comboBox2";
    			this->comboBox2->Size = System::Drawing::Size(61, 21);
    			this->comboBox2->TabIndex = 1;
    			this->comboBox2->Text = L"4800";
    			// 
    			// button1
    			// 
    			this->button1->Font = (gcnew System::Drawing::Font(L"Palatino Linotype", 8.25F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
    				static_cast<System::Byte>(0)));
    			this->button1->Location = System::Drawing::Point(107, 65);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(83, 26);
    			this->button1->TabIndex = 2;
    			this->button1->Text = L"Valider";
    			this->button1->UseVisualStyleBackColor = true;
    			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    			// 
    			// groupBox1
    			// 
    			this->groupBox1->Controls->Add(this->button1);
    			this->groupBox1->Controls->Add(this->comboBox2);
    			this->groupBox1->Controls->Add(this->comboBox1);
    			this->groupBox1->Location = System::Drawing::Point(3, 152);
    			this->groupBox1->Name = L"groupBox1";
    			this->groupBox1->Size = System::Drawing::Size(285, 109);
    			this->groupBox1->TabIndex = 3;
    			this->groupBox1->TabStop = false;
    			this->groupBox1->Text = L"Paramètrage";
    			// 
    			// textBox1
    			// 
    			this->textBox1->Location = System::Drawing::Point(8, 37);
    			this->textBox1->Name = L"textBox1";
    			this->textBox1->Size = System::Drawing::Size(269, 20);
    			this->textBox1->TabIndex = 4;
    			// 
    			// label1
    			// 
    			this->label1->AutoSize = true;
    			this->label1->Font = (gcnew System::Drawing::Font(L"Trebuchet MS", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
    				static_cast<System::Byte>(0)));
    			this->label1->ForeColor = System::Drawing::Color::Red;
    			this->label1->Location = System::Drawing::Point(71, 16);
    			this->label1->Name = L"label1";
    			this->label1->Size = System::Drawing::Size(131, 18);
    			this->label1->TabIndex = 5;
    			this->label1->Text = L"Trame lue sur le port";
    			// 
    			// button2
    			// 
    			this->button2->Location = System::Drawing::Point(107, 79);
    			this->button2->Name = L"button2";
    			this->button2->Size = System::Drawing::Size(82, 28);
    			this->button2->TabIndex = 6;
    			this->button2->Text = L"Lecture";
    			this->button2->UseVisualStyleBackColor = true;
    			this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
    			// 
    			// groupBox2
    			// 
    			this->groupBox2->Controls->Add(this->button2);
    			this->groupBox2->Controls->Add(this->label1);
    			this->groupBox2->Controls->Add(this->textBox1);
    			this->groupBox2->Location = System::Drawing::Point(3, 27);
    			this->groupBox2->Name = L"groupBox2";
    			this->groupBox2->Size = System::Drawing::Size(284, 125);
    			this->groupBox2->TabIndex = 7;
    			this->groupBox2->TabStop = false;
    			this->groupBox2->Text = L"Lecture tour par tour";
    			// 
    			// menuStrip1
    			// 
    			this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(1) {this->fichierToolStripMenuItem});
    			this->menuStrip1->Location = System::Drawing::Point(0, 0);
    			this->menuStrip1->Name = L"menuStrip1";
    			this->menuStrip1->Size = System::Drawing::Size(292, 24);
    			this->menuStrip1->TabIndex = 8;
    			this->menuStrip1->Text = L"menuStrip1";
    			// 
    			// fichierToolStripMenuItem
    			// 
    			this->fichierToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^  >(1) {this->quitterToolStripMenuItem});
    			this->fichierToolStripMenuItem->Name = L"fichierToolStripMenuItem";
    			this->fichierToolStripMenuItem->Size = System::Drawing::Size(50, 20);
    			this->fichierToolStripMenuItem->Text = L"Fichier";
    			this->fichierToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::fichierToolStripMenuItem_Click);
    			// 
    			// quitterToolStripMenuItem
    			// 
    			this->quitterToolStripMenuItem->Name = L"quitterToolStripMenuItem";
    			this->quitterToolStripMenuItem->Size = System::Drawing::Size(152, 22);
    			this->quitterToolStripMenuItem->Text = L"Quitter";
    			this->quitterToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::quitterToolStripMenuItem_Click);
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(292, 266);
    			this->Controls->Add(this->groupBox2);
    			this->Controls->Add(this->groupBox1);
    			this->Controls->Add(this->menuStrip1);
    			this->Name = L"Form1";
    			this->Text = L"Liaison serie";
    			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
    			this->groupBox1->ResumeLayout(false);
    			this->groupBox2->ResumeLayout(false);
    			this->groupBox2->PerformLayout();
    			this->menuStrip1->ResumeLayout(false);
    			this->menuStrip1->PerformLayout();
    			this->ResumeLayout(false);
    			this->PerformLayout();
     
    		}
    #pragma endregion
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    			 /* Bouton Valider des paramètres de la liason*/
    	{obj=gcnew cl_Bluetooth ("COM1",9600);
    	 char *Pserie;
    	 int speed;
    	 speed=Convert::ToInt32(comboBox2->Text);
    	             /* Conversion d'un String^ en char* */
    	 Pserie=static_cast<char *>(System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(comboBox1->Text).ToPointer());
    	 obj->modifPARAM(Pserie,speed); //on passe la configuration choisie pour valider le port série et sa vitesse de transfert
    	 delete (Pserie);
    };
    //------------------------------------------------------------------------------------------
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e)
    			 /* Bouton pour lire les trames sur le port série*/
    		 {
    		  textBox1->Text=Convert::ToString(obj->Lecture()); //affichage de la trame lue dans le textBox
    		 }
    //------------------------------------------------------------------------------------------
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    		 }
    private: System::Void quitterToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) 
    		 {Close();
    		 }
    //------------------------------------------------------------------------------------------
    private: System::Void fichierToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
    		 }
    }
    Voilà pour ce que j'ai réalisé pour le moment grâce à votre aide. J'espère que quelqu'un pourra m'aider à trouver la solution à mon dernier problème. Désolée pour tout le code que j'ai affiché c'est un peu bourrin mais je vois pas du tout l'erreur.
    Je vous rapelle les erreurs que VS2005 m'affiche:

    cl_Bluetooth.obj : error LNK2028: jeton non résolu (0A00000D) "extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z) référencé dans la fonction "extern "C" int __clrcall MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YMHPAUHWND__@@PB_W1I@Z)

    cl_Bluetooth.obj : error LNK2019: symbole externe non résolu "extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z) référencé dans la fonction "extern "C" int __clrcall MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YMHPAUHWND__@@PB_W1I@Z)

    C:\Documents and Settings\mbignon\Mes documents\projet\module de test3\test_serie\Debug\test_serie.exe : fatal error LNK1120: 2 externes non résolus

  11. #11
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 51
    Points : 43
    Points
    43
    Par défaut
    Le linker cherche la fonction MessageBoxW (donc la version Unicode de MsgBox), il ne la trouve pas.
    Tu as surement un include manquant ou une lib manquante qui devrait être liée à ton projet.

  12. #12
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    essaie de définir WIN32_LEAN_AND_MEAN

  13. #13
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Réponse 2
    Bon j'avoue je suis un peu larguer là.
    Ce que je trouve bizarre c'est que quand je mets les MessageBox en commentaire il y a encore les mêmes erreurs, pourtant il s'agit bien des messagesbox ki font ch... . Je ne comprends pas la définition de WIN32_LEAN_AND_MEAN et je ne vois pas quelles bibliothèques inclure.

    Dans ce projet nous sommes 2. Je gère tout ce qui touche au PDA et au GPS et mon collègue gère le PC de gestion qui sauvegarde toutes les affaires traités dans une base de données MySQL. Cette BDD sera ensuite exporter au format CSV. Mon collègue a une question, donc je vous la pose ^^.

    "Comment gère-t-on une MySQL exception ?"
    exemple lorsqu'il ouvre la connection il veut connaitre si elle s'est bien passer.

  14. #14
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    qu'il regarde du coté d'ado.net http://dotnet.developpez.com/cours/#a_db

  15. #15
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Compte rendu
    La partie que j'ai réaliser grâce à votre aide setrt pour la partie module de tes du projet officiel du BTS. J'ai toujours les 3 mêmes erreurs que je n'arrive pas à résoudre malgrès vos conseils.

    Cette partie je dois la rendre ce jour-ci avant 16 heures. Si elles ne marchent pas c'est pas grave en soit mais j'ai besoin de savoir quand même ^^.

    Je vous annonce la suite de mon projet.
    - Lecture d'un fichier XML pour afficher les numéros d'affaires à traiter dans la journée.

    - Extraction des positions, date et heures d'une trame NMEA.

    - Calcul de déplacement, de vitesse et de durée de l'egin de coupe.

    - Ecriture de fichier CSV pour traçabilité des actions faite par le conducteur.

    Voilà, je commencerais par la partie extraction des trames. Je vous mettrais en ligne toute l'analyse UML que j'ai terminé.

  16. #16
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    et bien bon courage.
    Si tu as des questions, fait en sorte quelles sont précises

  17. #17
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Analyse UML du projet
    Bonjour à tous,

    en attendant l'avancement du projet je vous propose l'analyse UML complète du projet.

    1°) Diagramme des cas d'utilisation

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Sans titre.bmp[/IMG]


    2°) Scénarios

    Scénario « gérer_client »

    1) L’IHM_Entrepreneur se connecte à la BDD.
    2) L’entrepreneur choisit d’ajouter un client.
    3) L’entrepreneur saisie les informations.
    4) L’objet de la classe « cl_client » envoie une requête à la BDD pour ajouter le client.
    5) L’IHM_Entrepreneur se déconnecte de la BDD.

    Enchaînements Alternatifs :

    A1 : L’utilisateur choisit de modifier un client.
    L’enchaînement A1 commence au point 2 du scénario nominal
    3) L’objet de la classe « cl_client » envoie une requête à la BDD pour récupérer la liste des clients.
    4) L’utilisateur sélectionne le client désiré.
    5) L’utilisateur modifie les informations voulues.
    6) L’objet de la classe « cl_client » envoie une requête à la BDD pour modifier le client.
    Le scénario reprend au point 4.

    A2 : L’utilisateur choisit de supprimer un client.
    L’enchaînement A2 commence au point 2 du scénario nominal.
    3) L’objet de la classe « cl_client » envoie une requête à la BDD pour récupérer la liste des clients.
    4) L’utilisateur sélectionne le client désiré.
    5) L’objet de la classe « cl_client » envoie une requête à la BDD pour supprimer le client.
    Le scénario reprend au point 4.


    Enchaînements d’erreurs :

    E1 : L’utilisateur n‘est pas connecté à la BDD.
    L’enchaînement E1 commence au point 1 du scénario nominal.
    2) L’IHM_Entrepreneur affiche l’erreur.

    Scénario « gérer_employe »

    1) L’IHM_Entrepreneur se connecte à la BDD.
    2) L’entrepreneur choisit d’ajouter un employé.
    3) L’entrepreneur saisie les informations.
    4) L’objet de la classe « cl_employé » envoie une requête à la BDD pour ajouter l'employé.
    5) L’IHM_ Entrepreneur se déconnecte de la BDD.

    Enchaînements Alternatifs :

    A1 : L’utilisateur choisit de modifier un employé.
    L’enchaînement A1 commence au point 2 du scénario nominal
    3) L’objet de la classe « cl_employé » envoie une requête à la BDD pour récupérer la liste des employés.
    4) L’utilisateur sélectionne l'emplpoyé désiré.
    5) L’utilisateur modifie les informations voulues.
    6) L’objet de la classe « cl_employé » envoie une requête à la BDD pour modifier l'employé.
    Le scénario reprend au point 4.

    A2 : L’utilisateur choisit de supprimer un employé.
    L’enchaînement A2 commence au point 2 du scénario nominal.
    3) L’objet de la classe « cl_employé » envoie une requête à la BDD pour récupérer la liste des employés.
    4) L’utilisateur sélectionne l'employé désiré.
    5) L’objet de la classe « cl_employé » envoie une requête à la BDD pour supprimer l'employé.
    Le scénario reprend au point 4.


    Enchaînements d’erreurs :

    E1 : L’utilisateur n‘est pas connecté à la BDD.
    L’enchaînement E1 commence au point 1 du scénario nominal.
    2) L’IHM Entrepreneur affiche l’erreur.

    Scénario « gérer_affaire »

    1) L’IHM_Entrepreneur se connecte à la BDD.
    2) L’entrepreneur choisit d’ajouter une affaire.
    3) L’entrepreneur saisie les informations.
    4) L’objet de la classe « cl_affaire » envoie une requête à la BDD pour ajouter l'affaire.
    5) L'IHM_Entrepreneur se déconnecte de la BDD.

    Enchaînements Alternatifs :

    A1 : L’utilisateur choisit de modifier une affaire.
    L’enchaînement A1 commence au point 2 du scénario nominal
    3) L’objet de la classe « cl_affaire » envoie une requête à la BDD pour récupérer la liste des affaires.
    4) L’utilisateur sélectionne l'affaire désirée.
    5) L’utilisateur modifie les informations voulues.
    6) L’objet de la classe « cl_affaire » envoie une requête à la BDD pour modifier l'affaire.
    Le scénario reprend au point 4.

    A2 : L’utilisateur choisit de supprimer une affaire.
    L’enchaînement A2 commence au point 2 du scénario nominal.
    3) L’objet de la classe « cl_affaire » envoie une requête à la BDD pour récupérer la liste des affaires.
    4) L’utilisateur sélectionne l'affaire désirée.
    5) L’objet de la classe « cl_affaire » envoie une requête à la BDD pour supprimer l'affaire.
    Le scénario reprend au point 4.


    Enchaînements d’erreurs :

    E1 : L’utilisateur n‘est pas connecté à la BDD.
    L’enchaînement E1 commence au point 1 du scénario nominal.
    2) L’IHM_Entrepreneur affiche l’erreur.

    Scénario « exporter_facture »

    1) L’entrepreneur choisit d’exporter une facture.
    2) L’IHM_Export se connecte à la BDD.
    3) L'objet de la classe « cl_Exporter » envoie une requête à la BDD pour récupérer la liste des affaires traitées.
    4) L'objet de la classe « cl_Exporter » ouvre un fichier CSV.
    5) L’objet de la classe « cl_Exporter » édite la facture.
    6) L’entrepreneur choisit d’imprimer la facture.
    7) L'objet de la classe « cl_Exporter »ferme le fichier CSV.
    8) L'IHM_Export se déconnecte de la BDD.

    Enchaînements d’erreurs :

    E1 : L’utilisateur n‘est pas connecté à la BDD.
    L’enchaînement E1 commence au point 2 du scénario nominal.
    3) L’IHM_Export affiche l’erreur.


    Scénario « exporter_bulletin »


    1) L’entrepreneur choisit d’exporter un bulletin.
    2) L’IHM_Export se connecte à la BDD.
    3) L'objet de la classe « cl_Exporter » envoie une requête à la BDD pour récupérer la liste des affaires traitées.
    4) L'objet de la classe « cl_Exporter »ouvre un fichier CSV.
    5) L’objet de la classe « cl_Exporter » édite le bulletin.
    6) L’entrepreneur choisit d’imprimer le bulletin.
    7) L'objet de la classe « cl_Exporter » ferme le fichier CSV.
    8) L'IHM_Export se déconnecte de la BDD.

    Enchaînements d’erreurs :

    E1 : L’utilisateur n‘est pas connecté à la BDD.
    L’enchaînement E1 commence au point 2 du scénario nominal.
    3) L’IHM_Export affiche l’erreur.


    Scénario « Arracher_betteraves »


    1) L’employé appuie sur top_départ pour commencer l'arrachage.
    2) L'IHM_Employé ouvre un fichier CSV dont le nom correspond au numéro de l'affaire.
    3) L'IHM_Employé ecrit l'heure et la date dans le fichier CSV.
    4) L'employé appuie sur pause.
    5) L'IHM_Employé ecrit l'heure et la surface traitée dans le fichier.
    6) L'employé appuie sur fin de pause.
    7) L'IHM_Employé ecrit l'heure dans le fichier CSV.
    8) L’IHM_Employé indique que la surface a été traitée par un signal sonore et visuel donc l’employé appuie sur top_fin.
    9) L'IHM_Employé ecrit l'heure, la durée de l'arrachage, la surface traitée et la vitesse moyenne dans le fichier CSV.
    10) L'IHM_Employé ferme le fichier CSV.
    11) L’employé quitte l’application.

    Enchaînements alternatifs :

    A1 : L’employé annule l’affaire.
    L’enchaînement A1 commence au point 1 du scénario nominal.
    2) L’application propose la sauvegarde du traitement effectué.
    3) L’employé valide son choix.
    Le scénario reprend au point 11 du scénario nominal.


    Scénario « Paramétrer »


    1) L'IHM_Employé ouvre le fichier xml.
    2) L'IHM_Employé lit dans le fichier xml les affaires à traiter.
    3) L'employé selectionne l'affaire, la vitesse du port série, le port, la largeur de coupe et son nom et valide ces paramètes.
    4) L'IHM_Employé remplace dans le fichier xml, le numéro de l'affaire par son chemin d'accés.
    5) L'IHM_Employé ferme le fichier xml.

    Enchaînements alternatifs :

    A1 : Il n’a aucune affaires de chargé dans le PDA.
    L’enchaînement A1 commence au point 1 du scénario nominal.
    2) L’IHM_Employé indique qu’il n’a aucune affaire dans le PDA.
    Le scénario reprend au point 5 du scénario nominal.



    Scénario « Transférer »



    1) L'IHM_Entrepreneur se connecte à la BDD.
    2) L'IHM_Entrepreneur ouvre le fichier XML.
    3) L'IHM_Entrepreneur lit dans le fichier XML pour connaîre le nombre de fichiers CSV.(nb_fichier)

    Pour i allant 1 à nb_fichier par pas de 1 faire

    4) L'IHM_Entrepreneur lit dans le fichier XML le nom du fichier de l'affaire.
    5) L'IHM_Entrepreneur ouvre le fichier CSV.
    6) L'IHM_Entrepreneur lit les informations contenus dans le fichier CSV.
    7) L'IHM_Entrepreneur envoie une requête à la BDD pour ajouter une affaire avec les informations provenant du fichier CSV.
    8) L'IHM_Entrepreneur ferme le fichier CSV.

    Fin pour

    9) L'IHM_Entrepreneur se déconnecte de la BDD.



    3°) Diagramme de séquence

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\arracher_betteraves2.bmp[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\arracher_betteraves.bmp[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\Diagramme de séquence.odt[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\Exporter_bulletin.bmp[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\Exporter_facture.bmp[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\Gérer affaire.bmp[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\Gérer_BDD.bmp[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\Paramétrer.bmp[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagramme de sequence\Transférer.bmp[/IMG]

    4°) Diagrame des classes

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagrammes de classes\Employé.bmp[/IMG]

    [IMG]C:\Documents and Settings\mbignon\Bureau\projet\Analyse UML\Diagrammes de classes\Entrepreneur.bmp[/IMG]


    Voila pour cette analyse réalisé par moi-même et mon collègue. Ce post est à titre informatif et peut vous donnez des idées. J'espère qu'il n'y a pas trop de fautes.

    Désolé je viens de me rendre compte kon ne peut pas y mettre les images :s

  18. #18
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    on peut mettre des images, il faut soit les mettres sur un serveur, soit les uploader à la main grace au forum

  19. #19
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut Reprise du projet !!!
    Bonjour,

    Après quelques vacances bien mérités, je me remet à mon projet.
    Nous allons commencer la programmation du vrai projet.
    Je m'occupe de la partie PDA et je me demande quel type de projet choisir pour avoir un formulaire pour PDA. Dois-je prendre un projet de type application windows form ?

    Merci de me répondre

  20. #20
    Membre habitué
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Points : 191
    Points
    191
    Par défaut g trouve
    Je telecharge le sdk de windows mobile 6 pour avoir un formulaire qd je créer un projet smart device.

    J'espere quie ce sdk est compatible avec la plupart des PDA. Celui que j'utilise est un Acer n311.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Projet ASP (et non ASP.Net) avec Visual Studio .NET 2003
    Par math1234 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 07/05/2008, 15h45
  2. Projet gestion d'arrachage de betterave avec PDA + DGPS
    Par gueulederack dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/03/2007, 14h15
  3. Pojet Arrachage de Betterave avec GPS + PDA
    Par gueulederack dans le forum C++
    Réponses: 4
    Dernier message: 22/02/2007, 11h51
  4. Projet jeu RPG/moteur 3D isométrique avec SDL
    Par Milan111 dans le forum Projets
    Réponses: 4
    Dernier message: 13/04/2006, 22h01
  5. projet de base Interbase 7.5 avec images
    Par KRis dans le forum InterBase
    Réponses: 8
    Dernier message: 13/06/2005, 10h17

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