Динамическое создание заранее неизвестного кол-ва элементов

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by besfamilnyi, 2 Jun 2018.

  1. besfamilnyi

    besfamilnyi Member

    Joined:
    5 Jun 2012
    Messages:
    45
    Likes Received:
    10
    Reputations:
    0
    Доброго времени суток уважаемые античатовцы! В общем у меня появилась нерешаемая для меня задача, обращаюсь к вам за помощью.
    Мне нужно подгружать в программу, а именно в стринг листы текстовые файлы, но кол-во файлов заранее неизвестно, файлы должны быть считаны все разом и программа будет работать с ними одновременно. Т.е. имена стринг листов я не могу заранее задать в коде, для каждого файла должен создаться свой уникальный стринг лист.
    Среда - RadStudio C++
    Хочется простого решения. Собственно вот моё начало:
    Code:
    //TStringList file_names=new TStringList();
                           const int max=10;
                           TStringList*list[max];
                           int i=0;
                                    while (i<10)
                                    {
                                    list[i]=new TStringList();                            
                                    i ++;
                                    }
    //тут будет удаление
    //тут освобождение памяти
    Оно создает мне стринг листы, да, вроде начало есть, но дальше не могу сдвинуться. А именно, допустим я считываю имена всех файлов в специальный стринг лист file_names, и мне нужно всего то задать const int max равное file_names->Count; но при этом компилятор ругается на TStringList*list[max]; пишет мол переменная max создана но нигде не используется, как мне скормить конструктору кол-во файлов file_names->Count?. Испотльзовать вариант забронировать массив имен(или как это правильно называется?) побольше наподобие TStringList*list[1024]; не хочу, хочется сделать как правильно.
    Помогите пожалуйста. Заранее спасибо большое!
    ___________________________________________________________________________

    upd: решение найдено, оказывается правильный синтаксис выглядит так:
    Code:
    const int FMax = file_names->Count;//тут собсно мои имена файлов
    TStringList **list = new TStringList*[FMax]; //создание массива указателей
    int i=0;
      while(i<FMax)
      {
      list[i] = new TStringList; // создание каждого StringList'а
      i ++;
      }
    
    может кому то пригодится.
     
    #1 besfamilnyi, 2 Jun 2018
    Last edited: 2 Jun 2018