Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > .NET: Общие вопросы > Не удаётся добавить строковый массив в таблицу


Автор: Katerina1993 26.12.18, 19:47
Пытаюсь добавить строковый массив в таблицу выдаёт ошибку.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    private: System::Void buildWordList()
         {
            String ^line = "";
            setlocale(LC_ALL, "En_US");
            
            std::string str[5] = {"sss","aaa","ddd","ggg","sdawd"};
            clue_window->clue_table->Rows->Add(str[2]);
            
         }


ОШИБКА
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    c:\documents and settings\мои документы\visual studio 2008\projects\proj5\proj5\Form1.h(369) : error C2664: int System::Windows::Forms::DataGridViewRowCollection::Add(...cli::array<Type,dimension> ^): невозможно преобразовать параметр 1 из 'std::string' в 'System::Object ^'
    1>        with
    1>        [
    1>            Type=System::Object ^,
    1>            dimension=1
    1>        ]
    1>        Оператор определенного пользователем преобразования недоступен, или
    1>        Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
    1>

Если убрать str[2] и записать какое-нибудь слово, то тогда сработает.

Автор: Славян 27.12.18, 00:59
Попробуйте чистый способ: ...Add( str[2].c_str() );

Автор: Wound 27.12.18, 07:27
Цитата Katerina1993 @
Пытаюсь добавить строковый массив в таблицу выдаёт ошибку.

Вообще ничего не понятно из написанного.

Какой тип имеет Rows? :
Цитата Katerina1993 @
clue_window->clue_table->Rows


Добавлено
Вот тебе пример, работает в консоли:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    #include "stdafx.h"
    #include <string>
    using namespace System;
    using namespace System::Collections::Generic;
     
    int main(array<System::String ^> ^args)
    {
        const int cArraySize = 5;
        List<String^>^ wordList = gcnew List<String^>();
        std::string str[cArraySize] = { "sss","aaa","ddd","ggg","sdawd" };
     
        for(size_t idx = 0; idx < cArraySize; ++idx)
        {
            wordList->Add(gcnew String(str[idx].c_str()));
        }
     
        for (int idx = 0; idx < wordList->Count; ++idx)
        {
            System::Console::WriteLine(wordList[idx]);
        }
        System::Console::ReadKey();
     
        return 0;
    }

Автор: Katerina1993 27.12.18, 14:25
Спасибо, но я уже разобралась. Оказывается в Visual C++ есть справка достаточно нажать F1. Там есть примеры работы с массивом. Вот мой вариант.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    private: System::Void buildWordList()
    {
        String ^line = "";
        setlocale(LC_ALL, "En_US");
                
        array<String^>^ str = {"test","test2"};
                
        clue_window->clue_table->Rows->Add(str[0],str[1]);
                
    }

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)