Форум: "Начинающим";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
ВнизСохранение текста в StrinGrid. Найти похожие ветки
← →
Punko (2011-05-16 22:07) [0]Добрый вечер. Собственно, сабж, но есть трудности.
1. не известно количество строк и столбцов
2. файл формата :
шапка ( состоит из текстовых данных) (первая строчка)
остальные строчки - числа ( положительные и отрицательные), которые надо будет потом обработать.
Трудность в том, как определить кол-во строк и столбцов.
Заранее благодарю, извините если, неточно описал проблему.
← →
MBo © (2011-05-16 22:20) [1]считать файл в TStringList
Дальше его свойства помогут
← →
Punko (2011-05-16 22:28) [2]переменная типа TStringList - это переменная, посредством которой будет текст экспортироваться из файла в таблицу, я правильно вас понял?
И ещё, я зарегистрировался на сайте, а как войти под своим ником?:)
← →
MBo © (2011-05-16 22:44) [3]
> переменная типа TStringList - это переменная, посредством
> которой будет текст экспортироваться из файла в таблицу,
> я правильно вас понял?
Да, это промежуточное хранилище.
Сразу будет понятно, сколько строк нужно сделать в гриде.
После обработки всех строк (если количество чисел в них может быть разным) выяснится, сколько столбцов понадобится
← →
MBo © (2011-05-16 22:46) [4]
> а как войти под своим ником?:)
Входа на сайт нет, только в форме вопроса или ответа отмечаешься (и это в куках запоминается)
← →
Punko (2011-05-16 23:02) [5]Спасибо! Подскажите еще пожалуйста, я загрузил текст в переменную типа TStringList, далее, с помощью свойства Count присвоил количество строк StringGrid. А какое свойство для определения количества столбцов? и как распределять равномерно по ячейкам данные из TStringList? С помощью цикла?
Извините за глупые вопросы, но не нашёл этого в справочнике. Спасибо!
← →
Германн © (2011-05-16 23:35) [6]
> А какое свойство для определения количества столбцов?
Чем разделены числа в строке?
← →
Punko (2011-05-16 23:44) [7]Числа разделены 7 (семью) пробелами и при этом первое число в строке идёт тоже после пробелов.
Пример
1 125 7856 548
54 584 545 7
← →
Anatoly Podgoretsky © (2011-05-16 23:56) [8]> Punko (16.05.2011 22:28:02) [2]
Тогда в форме сообщения указывай свой логин и по запросу пароль
← →
Anatoly Podgoretsky © (2011-05-16 23:57) [9]> Punko (16.05.2011 23:44:07) [7]
CommaText
← →
Punko (2011-05-17 00:12) [10]
> CommaText
на сколько я понимаю, данное свойство сохраняет весь файл в одну строку, а надо в виде таблицы? нет?
← →
Punko (2011-05-17 00:53) [11]Хм, а можно сделать еще так:
с через readln считать строку, разбить на символы,каждый новый символ - плюсь один столбец, эти символы записать в ячейку таблицы - создать новую строку - опять считать троку и т.д.
всё это в цикле While eof.
Так проще или же всё так выбрать TStringList?
← →
Германн © (2011-05-17 01:09) [12]
> Punko (17.05.11 00:53) [11]
>
> Хм, а можно сделать еще так:
> с через readln считать строку, разбить на символы,каждый
> новый символ - плюсь один столбец, эти символы записать
> в ячейку таблицы
Если под термином "символ" подразумевается термин "число". И если количество чисел в строках всегда фиксировано. Тогда да. Тогда старый добрый readln самый лучший способ. Но тогда не понятен ваш вопрос "какое свойство для определения количества столбцов?".
← →
Punko (2011-05-17 01:17) [13]Да, под символом имелось ввиду число. Количество чисел не фиксировано, но ведь можно добавлять столбец при "нахождении" нового числа, вот так
while pos(" ", s) >0 do begin
.
а вопрос про свойство относился к варианту использования TStringList, вариант с readln пришёл позжее.
← →
Германн © (2011-05-17 01:30) [14]
> Punko (17.05.11 01:17) [13]
>
> Да, под символом имелось ввиду число. Количество чисел не
> фиксировано, но ведь можно добавлять столбец при "нахождении"
> нового числа, вот так
> while pos(" ", s) >0 do begin.
> а вопрос про свойство относился к варианту использования
> TStringList, вариант с readln пришёл позжее.
>
Ну не совсем так, но принцип тот же. Искать в каждой новой строке все числа и добавлять новые столбцы, если количество чисел в строке больше чем количество столбцов. Вот только, имхо возможны "глюки", если одна и та же таблица ака TStringGrid используется несколько раз подряд для разных файлов данных.
← →
Punko (2011-05-17 01:37) [15]Вообще, идёт загрузка трёх разных файлов в три разных таблицы, после чего есть возможность совместить их в одну большую, но для этого надо привести их к общему виду. Но это всё потом, сначала нужно реализовать загрузку хотя бы одной. Спасибо, завтра попробую сделать двумя способами.
← →
MBo © (2011-05-17 08:17) [16]
> Вообще, идёт загрузка трёх разных файлов в три разных таблицы,
> после чего есть возможность совместить их в одну большую,
> но для этого надо привести их к общему виду
Если это не требует взаимодействия с пользователем, то грид, возможно, совсем не нужен
← →
Anatoly Podgoretsky © (2011-05-17 08:55) [17]
> на сколько я понимаю, данное свойство сохраняет весь файл
> в одну строку, а надо в виде таблицы? нет?
Нет и далеко не то.
← →
Anatoly Podgoretsky © (2011-05-17 08:57) [18]
> Так проще или же всё так выбрать TStringList?
Проще и менее накладнее текстовые файлы
> Числа разделены 7 (семью) пробелами
Это означает восемь "колонок", а так как это фиксировано, то никакой парсер не нужен, все это может сделать сам ReadLn одним махом.
← →
Anatoly Podgoretsky © (2011-05-17 08:59) [19]
> Punko (17.05.11 01:37) [15]
Количество входных файлов не играет роли, может быть сколько угодно.
← →
Anatoly Podgoretsky © (2011-05-17 09:01) [20]
> Но тогда не понятен ваш вопрос "какое свойство для определения
> количества столбцов?".
А это просто противоречит ранее приведеной информации, у него фиксированое количество "колонок" - их восемь, он просто считать не умеет. Кроме того ReadLn может работать и с неизвестным, но ограниченым их количеством, вполне в файле может быть и меньше восьми, ничего страшного для RealLn нет, это мощный, недооцененый инструмент.
← →
Punko (2011-05-17 21:49) [21]немного разобрался и решил использовать RealLn.
Но выдаёт ошибку, а в чём она - не пойму.
for i := 0 to Length(s) do
begin
while copy(s,i,1)=prob do
showmessage("пробел")
else do
begin
Говорит, что ожидается end перед else.
Если вывод сообщения поставить меж begin и end, толку не будет.
← →
Punko (2011-05-17 21:50) [22]в конце цикла я завершил его end"ом.
← →
Германн © (2011-05-17 22:05) [23]Какой еще else?
else может быть связан только с операторами if или case.
Кроме того строка индексируется с 1, а не с 0.
← →
Punko (2011-05-17 22:07) [24]Вот тупень, точно! Спасибо!!!!!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.005 c