Собственно из-за тупости некоторых вещей в билдере, вынужден переписать программу в VisualStudii 2013. Но встал вопрос о классе TStringList. Поискав, понял, что чистых аналогов нету. Собственно интересует, как такое из билдера перевести в MSVS 2013.
TStringList list = new TStringList();
//.......
list.AddObject("text", (TObject*)1);
//.......delete list;
Здравствуйте, semihal, Вы писали:
S>Собственно из-за тупости некоторых вещей в билдере, вынужден переписать программу в VisualStudii 2013. Но встал вопрос о классе TStringList. Поискав, понял, что чистых аналогов нету. Собственно интересует, как такое из билдера перевести в MSVS 2013.
Что можно использовать, какие есть стороние бибилиотеки? S>
S>Думаю смысл вопроса понятен. Писал с телефона, если что извините
Смысл понятен, а вот что ты из Builder-a используешь и что именно тебе нужно переносить не ясно, можешь начать с того что в программе на Builder-e перейдешь на чистый С++ и boost, а графическую часть портируешь потом.
Здравствуйте, semihal, Вы писали:
S>Собственно из-за тупости некоторых вещей в билдере, вынужден переписать программу в VisualStudii 2013. Но встал вопрос о классе TStringList. Поискав, понял, что чистых аналогов нету. Собственно интересует, как такое из билдера перевести в MSVS 2013.
S>
S>TStringList list = new TStringList();
S>//.......
S>list.AddObject("text", (TObject*)1);
S>//.......
S>delete list;
S>
В дельфях же вроде есть исходники vcl? Выдери оттуда класс TStringList, модифицируй там, где он привязан к vcl и используй в msvc
В итоге получаю 0, хотя когда делаю addObject то кидаю любое i == true;
+ вопрос, как сделать, что бы вернуть такое значение, что бы можно было его записать в itemBox.
S>В итоге получаю 0, хотя когда делаю addObject то кидаю любое i == true;
подозреваю ты делаешь что-то вроде createMyvector(42), в результате первые элементы вектора — ("", 0)
class vectorByts
{
private:
std::vector < std::pair< System::String^, int > > myVector;
public:
void addObject(System::String^ text, int i)
{
myVector.push_back(std::make_pair(text, 1));
}
System::String^ resultMyVector()
{
if (!myVector.empty())
System::String^ result = myVector.back().first;
return result;
}
vectorByts();
};
В общем, что пытаюсь слепить... addObject — создаёт строку в векторе, со значением text и i. А потом мы по индексу будем вытаскивать поле text из вектора, не трогая ID. Но порой придётся и ID трогать, что бы изменить его значение. Поле text нам предстоит засовывать в listBox1->Items->Add(). Поэтому и пытался его сделать типом System::String^
но в ответ получаю такую вещь:
see reference to class template instantiation 'std::pair<System::String ^,int>' being compiled
Здравствуйте, semihal, Вы писали:
S>собственно ночью исправил вот на такую вещь? S>
S>class vectorByts
S>{
S> public:
S> void addObject(System::String^ text, int i)
S> {
S> myVector.push_back(std::make_pair(text, 1));// Может все таки I а не 1
S> }
S> System::String^ resultMyVector()
S> {
S> if (!myVector.empty())
S> System::String^ result = myVector.back().first;
S> return result;// Здесь result не виден
S>
S>В общем, что пытаюсь слепить... addObject — создаёт строку в векторе, со значением text и i. А потом мы по индексу будем вытаскивать поле text из вектора, не трогая ID. Но порой придётся и ID трогать, что бы изменить его значение. Поле text нам предстоит засовывать в listBox1->Items->Add(). Поэтому и пытался его сделать типом System::String^
Тебе точно этот класс нужен?
S>но в ответ получаю такую вещь: S>see reference to class template instantiation 'std::pair<System::String ^,int>' being compiled
native и manage не дружат, поэтому либо std::vector< std::pair< std::string, int > >, либо cliext::List<> как это будет выглядеть не знаю.
S>в чём трабла?((
В том что нужно прочитать какую нибудь вводную книгу.