Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

вывод некоторых строк из файла [D7, XP]


gvozdkoff ©   (2011-12-29 16:19:00) 

Всем привет, ребята, чего то туплю
Есть текстовый файл, вот его содержание

ИМЯ,РАЗМЕР,ДАТА,ВРЕМЯ
ИМЯ,РАЗМЕР,ДАТА,ВРЕМЯ

после того как разбил строки над подстроки (разделяющим символом является запятая)

 sl1:= TStringList.Create;
 sl1.LoadFromFile('log.txt');
 sl2:= TStringList.Create;
 sl2.Delimiter:= ',';
 sl2.DelimitedText:=sl1.Text;
 sl2.SaveToFile('log.txt');

Получилось следующее

ИМЯ
РАЗМЕР
ДАТА
ВРЕМЯ
ИМЯ
РАЗМЕР
ДАТА
ВРЕМЯ

Мне нужно вывести определенные строки, например, только ИМЕНА
то есть
номер_строки=номер_строки + 4
Как это реализовать то ? Подскажите пожалуйста


sniknik   (2011-12-30 13:34:00) [1]

> загнал все в StringGrid
> спасибо большое за подсказку
тогда не за что... реально не за что.


gvozdkoff   (2011-12-30 10:59:00) [2]


> RWolf ©   (30.12.11 10:23) [10]
> // вспомнился анекдот про рацию на бронетранспортёре.


))))

Построил прапор роту и говорит:
- Кто может починить рацию на бронетранспортёре?
Из строя:
- Товарищь прапорщик, а рация на лампах или на транзисторах?
- Для тупых повторяю - НА БРОНЕТРАНСПОРТЁРЕ!!!


gvozdkoff   (2011-12-30 10:58:00) [3]

мужики, я извиняю если кого обидел, сейчас нашел процедуру , которая позволяет работать с  таким типом файла, как  с базой данных, загнал все в StringGrid. Ну так то вообще замечательно,  в плане визуального отображения данных ))спасибо большое за подсказку


RWolf   (2011-12-30 10:23:00) [4]

// вспомнился анекдот про рацию на бронетранспортёре.


Jeer   (2011-12-30 10:00:00) [5]


> gvozdkoff   (30.12.11 09:49) [8]
> впредь будьте повнимательнее, файл текстовый,
> sl1.LoadFromFile('log.txt');


Ты слушай, что тебе говорят, а не фантаризуй чего не знаешь.


gvozdkoff   (2011-12-30 09:49:00) [6]


> sniknik ©   (30.12.11 09:28) [7]
> обычный csv формат, разделение запятыми... открывается excel-
> ем, + некоторыми движками/рекордсетами (даже BDE). непонятно
> зачем велосипед изобретать.
>
> > в дальнейшем планируется выборка данных по дате либо диапазону
> дат, так что на этот случай решил пока перезаписывать
> вот вот уже начинается... а лучше бы решил изучить что нибудь
> DB-шное.


впредь будьте повнимательнее, файл текстовый,
sl1.LoadFromFile('log.txt');


sniknik   (2011-12-30 09:28:00) [7]

обычный csv формат, разделение запятыми... открывается excel-ем, + некоторыми движками/рекордсетами (даже BDE). непонятно зачем велосипед изобретать.

> в дальнейшем планируется выборка данных по дате либо диапазону дат, так что на этот случай решил пока перезаписывать
вот вот уже начинается... а лучше бы решил изучить что нибудь DB-шное.


Dennis I. Komarov   (2011-12-30 08:45:00) [8]

array of TRec


gvozdkoff   (2011-12-30 07:39:00) [9]

насчет перезаписи файла, в дальнейшем планируется выборка данных по дате либо диапазону дат, так что на этот случай решил пока перезаписывать


gvozdkoff   (2011-12-30 07:36:00) [10]

спасибо огромное господа, сейчас буду пробовать реализовать это


Юрий Зотов   (2011-12-29 16:48:00) [11]


j := 0; // j - номер нужной строки внутри группы из 4-х строк (j = 0,1,2,3)
for i := 0 to sl.Count div 4 - 1 do // i - номер группы
 WriteLn(sl[4 * i + j]); // Выводит только нужные строки

И два стринглиста, конечно, ни к чему - достаточно одного. Да и стоит ли перезаписывать файл - тоже вопрос (зависит от задачи).


KilkennyCat   (2011-12-29 16:44:00) [12]


> for i := n to sl1.count - (n + 1) do result := result +
> sl1[n] + ' ';

не , че та я напутал.

while n < sl1.count do begin
result := result + sl1[n] + ' ';
n := n + 4;
end;


KilkennyCat   (2011-12-29 16:39:00) [13]


> sl1:= TStringList.Create;
>  sl1.LoadFromFile('log.txt');
>  sl2:= TStringList.Create;
>  sl2.Delimiter:= ',';
>  sl2.DelimitedText:=sl1.Text;
>  sl2.SaveToFile('log.txt')

два стринглиста ненужно.

sl1:= TStringList.Create;
sl1.LoadFromFile('log.txt');
sl1.Delimiter:= ',';
sl1.DelimitedText:=sl1.Text;
result := '';
n := 0; // селектор, выбирает, что выводить
for i := n to sl1.count - (n + 1) do result := result + sl1[n] + ' ';


Наверх

Титульная страница Поиск, карта сайта Написать письмо