На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: maxim84_, juice
  
> Не удаётся добавить строковый массив в таблицу
    Пытаюсь добавить строковый массив в таблицу выдаёт ошибку.
    ExpandedWrap disabled
      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]);
              
           }


    ОШИБКА
    ExpandedWrap disabled
      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] и записать какое-нибудь слово, то тогда сработает.
    Сообщение отредактировано: JoeUser -
      Попробуйте чистый способ: ...Add( str[2].c_str() );
        Цитата Katerina1993 @
        Пытаюсь добавить строковый массив в таблицу выдаёт ошибку.

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

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


        Добавлено
        Вот тебе пример, работает в консоли:
        ExpandedWrap disabled
          #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;
          }
        Сообщение отредактировано: Wound -
          Спасибо, но я уже разобралась. Оказывается в Visual C++ есть справка достаточно нажать F1. Там есть примеры работы с массивом. Вот мой вариант.
          ExpandedWrap disabled
            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]);
                        
            }
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script Execution time: 0,0755 ]   [ 15 queries used ]   [ Generated: 16.06.19, 07:44 GMT ]