Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Чтение таблицы из TStringList


Автор: Volfs 28.12.2011, 16:18
Добрый день!
Подскажите, как проще реализовать запись и чтение данных из TStringList. Может быть есть стандартные функции, не хочется заново изобретать паровоз...
Структуру могу менять по своему желанию, так же думаю, какой разделитель лучше взять.. может быть ' 
Код

Записи типа:
123 текст число число число число текст  
124 текст число число число число текст
125 текст число число число число текст


Данные хочу записывать в класс, в массивы.

Принципиально думаю о двух вариантах:
1. Написать функцию (используя Pos, SubString и Length), которая будет искать разделители и брать данные между разделителями.
2. Использовать вывод в поток, но на сколько я понимаю вывод потока используется для ввода и вывода в файл.

Товарищи, как думаете, что лучше и есть ли еще варианты?
Заранее спасибо за помощь.

Автор: Данкинг 28.12.2011, 16:30
Цитата(Volfs @  28.12.2011,  17:18 Найти цитируемый пост)
Написать функцию (используя Pos, SubString и Length)

Именно. smile 

Автор: Alexeis 28.12.2011, 17:05
http://forum.vingrad.ru/forum/topic-290957/index.html

Автор: artsb 28.12.2011, 21:04
Код

    TStringList *slList, *slTemp;

    slList = new TStringList();

    if(!slList)
    {
        return;
    }
    // якобы читаем данные из файла
    slList->Add(L"123~текст sdfsdg~12445~89~33~65~sdvsdv текст");
    slList->Add(L"124~текст~число~число~число~число~текст");
    slList->Add(L"125~текст~число~число~число~число~текст");
    // выводим содержимое
    ListBox1->Items->Assign(slList);

    slTemp = new TStringList();

    if(!slTemp)
    {
        delete slList;
        return;
    }

    slTemp->StrictDelimiter = true; // если нужно, чтобы "текст" содержал пробелы
    slTemp->Delimiter = L'~'; // разделитель
    slTemp->DelimitedText = slList->Strings[0]; // строка, которую нужно разбить
    // выводим результат
    ListBox2->Items->Assign(slTemp);
    // уборка
    delete slTemp;

    delete slList;

Автор: Usper 29.12.2011, 07:53
Как вариант использовать функцию ExtractStrings().

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