En C++, j'ai une variable char [256] qui est remplie par un appel à une DLL externe qui la remplit de données. De là, je voudrais ajouter le char [] comme un élément ComboBox. Cela crée une erreur de construction car car [] n'est pas un type d'objet System :: Object. Des idées sur la conversion du char [] en quelque chose que je peux ajouter en tant qu'élément à un contrôle ComboBox? Convertir en une chaîne serait très bien, mais je ne suis pas sûr de savoir comment faire cela. Plus si j'essaye de créer une variable telle que:Convertir char [] en System :: Object
string strName;
crée également une erreur pour manquer ';' avant l'identifiant 'strName'. Je suis un débutant en C++ et je continue d'envelopper mon cerveau, donc merci pour toute aide fournie!
EDIT code complet comme demandé:
#pragma once
espace de noms FMODMultipleSoundcardWindowed {
#include <string>
#include "inc/fmod.h"
#include "inc/fmod_errors.h"
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;
FMOD_SYSTEM *systemA, *systemB;
FMOD_SOUND *soundA, *soundB;
FMOD_CHANNEL *channelA = 0, *channelB = 0;
FMOD_DSP *dspNormalizerA, *dspNormalizerB;
FMOD_DSP *dspCompressorA, *dspCompressorB;
FMOD_DSP *dspEqualizerA[10], *dspEqualizerB[10];
FMOD_DSP *dspVSTVUA, *dspVSTVUB;
FMOD_RESULT result;
unsigned int dspVSTVUHandleA, dspVSTVUHandleB;
unsigned int version;
int numdrivers, count;
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
result = FMOD_System_Create(&systemA);
ERRCHECK(result);
result = FMOD_System_GetVersion(systemA, &version);
ERRCHECK(result);
if (version < FMOD_VERSION)
{
MessageBox::Show("You are using an old version of FMOD!");
}
result = FMOD_System_GetNumDrivers(systemA, &numdrivers);
ERRCHECK(result);
for (count = 0; count < numdrivers; count++)
{
char name[256];
result = FMOD_System_GetDriverInfo(systemA, count, name, 256, 0);
ERRCHECK(result);
m_objPrimaryAudioDeviceComboBox->Items->Add(name[0]);
}
}
void ERRCHECK(FMOD_RESULT result)
{
if (result != FMOD_OK)
{
MessageBox::Show("FMOD Error!");
this->Close();
}
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::ComboBox^ m_objPrimaryAudioDeviceComboBox;
protected:
private: System::Windows::Forms::ComboBox^ m_objSecondaryAudioDeviceComboBox;
private:
System::ComponentModel::Container ^components;
région pragma Windows Form Designer généré Code
void InitializeComponent(void)
{
this->m_objPrimaryAudioDeviceComboBox = (gcnew System::Windows::Forms::ComboBox());
this->m_objSecondaryAudioDeviceComboBox = (gcnew System::Windows::Forms::ComboBox());
this->SuspendLayout();
//
// m_objPrimaryAudioDeviceComboBox
//
this->m_objPrimaryAudioDeviceComboBox->FormattingEnabled = true;
this->m_objPrimaryAudioDeviceComboBox->Location = System::Drawing::Point(12, 12);
this->m_objPrimaryAudioDeviceComboBox->Name = L"m_objPrimaryAudioDeviceComboBox";
this->m_objPrimaryAudioDeviceComboBox->Size = System::Drawing::Size(254, 21);
this->m_objPrimaryAudioDeviceComboBox->TabIndex = 0;
//
// m_objSecondaryAudioDeviceComboBox
//
this->m_objSecondaryAudioDeviceComboBox->FormattingEnabled = true;
this->m_objSecondaryAudioDeviceComboBox->Location = System::Drawing::Point(12, 54);
this->m_objSecondaryAudioDeviceComboBox->Name = L"m_objSecondaryAudioDeviceComboBox";
this->m_objSecondaryAudioDeviceComboBox->Size = System::Drawing::Size(254, 21);
this->m_objSecondaryAudioDeviceComboBox->TabIndex = 1;
//
// Form1
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(440, 426);
this->Controls->Add(this->m_objSecondaryAudioDeviceComboBox);
this->Controls->Add(this->m_objPrimaryAudioDeviceComboBox);
this->Name = L"Form1";
this->Text = L"FMOD Multiple Soundcard with VST";
this->ResumeLayout(false);
}
pragma en dregion
};
}
Annexe à ma réponse et les commentaires ci-dessous: mettez la ligne 'include' en dehors de 'l'espace de noms FMODMultipleSoundcardWindowed {'. Sinon, 'std' se termine par' FMODMultipleSoundcardWindowed :: std'. –
Cela me donne accès à l'objet chaîne comme prévu, ce qui est génial.Mais mon problème d'origine existe que je ne peux pas ajouter une chaîne std: string en tant qu'élément ComboBox car 'impossible de convertir le paramètre 1 de' std :: string 'en' System :: Object^' – Jeff
Édité ma réponse. –