| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Помогите разобраться с TStringList |
| Автор: Martin_8 22.12.2008, 01:59 | ||
| Здравствуйте. Помогите, пожалуйста, разобраться с TStringList. Статью о TStringList я прочитал, но всё равно не могу понять, почему происходит так, как описанное ниже. У меня есть txt файл, который мне необходимо обработать. Скажем, записать результат его парсинга в memo. Файл состоит из двух секций [IN_PARAM] и [OUT_PARAM]. В секции [OUT_PARAM] содержится информация в формате “^имя” = “значение^”. Причём блоки параметров “^имя” = “значение^” периодически (через 12 строк) повторяются (начало 12-и строчного блока это ^DocDate, а конец это ^Num ). Первые 12 строк описывают одну организацию, следующие 12 строк описывают вторую организацию и т.д. На выходе, я хочу получить только “значения”. txt файл прикреплён. Разбор я выполняю так.
Вся проблема во втором while: Первый 12 итераций в for выполняются нормально, и я получаю данные об первой организации. Но следующие 12 итераций for опять выводят информацию о первой организации, а не о следующей. С третей та же проблема и т.д. Хотя я вижу, что переменная j меняется. Возникает такое ощущение, что “указатель строки” не перемещается дальше, а остаётся на первом блоке из 12-записей. Покажите, где здесь ошибка и как её исправить? P.S. Потом, если удастся побороть описанную проблему, нужно будет вносить “значения” в БД, Insert запросом по 12 за раз. Посоветуйте, как и куда лучше сохранять мои “значения”, для последующей вставки в БД через Insert ? |
| Автор: Martin_8 22.12.2008, 10:02 | ||||
| Данкинг, Спаибо за ответ, особоеено в такое время. Я в принципе, делаю всё так, как Вы написали. Я так и делаю, вот здесь, как раз и нахдится "значение"
Вот это делается здесь:
Но я хочу понять, почему в моём случаи, не перемещается "указатель" строк в TStringList. Я просто зашёл в тупик. |
| Автор: NewDima 22.12.2008, 10:27 |
| не совсем вкуриваю, о каком указателе речь... |
| Автор: NewDima 22.12.2008, 11:10 |
| |
| Автор: TRS743 22.12.2008, 11:44 |
| for j:= h to h+12 do begin b:= Pos('^',s.Values[s.Names[j]]); // определяю позицию нахождения в строке символа ^ ss:=s.Values[s.Names[j]]; // переписываем строку Delete(ss,b,1); // удаляем символ ^ Memo2.Lines.Add(ss); // выводим результат в memo h:=h+1; end; Не совсем понял смысл проги, но выделенное красным цветом вызывает подозрения |
| Автор: Martin_8 22.12.2008, 12:02 | ||
| NewDima, Спасибо! А я как-то не заметил свойство ValueFromIndex у TStringList. С ним всё работает. Честно говоря, я не понял, почему не работает мой код, ну да ладно. Посоветуйте, пожалуйста, ещё по поводу этого:
|
| Автор: Данкинг 22.12.2008, 12:05 |
Когда "потом" - сразу и вноси. |
| Автор: NewDima 22.12.2008, 15:50 | ||
это уже следующая тема и другой раздел http://forum.vingrad.ru/forum/delphi-db-database-reporting.html |