Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2010, 00:11   #1
Николай ПН
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 75
По умолчанию Чтение и пропуск строк в файле DELPHI 7

Такая проблема, есть файл в котором через TAB записано:
Код:
#		t[min]		M.rot.sp.[Hz]	At.rot.sp.[Hz]	Act.curr[A]
 
0		0						
1		0.517		001500		001500		130
2		0.933		001500		001501		130
3		1.35		001500		001500		130
4		1.767		001500		001500		130
5		2.2		001500		001500		130
6		2.617		001500		001500		120
7		3.05		001500		001500		140
8		3.467		001500		001500		140
9		3.9		001500		001500		130
10		4.317		001500		001500		130
я хочу вывести все один из столбиков в memo. Вот код
Код:
procedure TForm1.bpClick(Sender: TObject);
var
  F: textfile;
  A,S,D,H,G,k: integer;
begin
  assignfile(F, 'TCP350_41.txt');
  reset(F);
    while not EOF(f) do
    begin
      read(F,A,S,D,H,G);
      mmoutput.Lines.Add(floattostr());
    end;
  closeFile(F);
end;
И вот беда программа не работает пока есть первые 3 строки, а когда их убрать из файла все работает.
Вопрос: Как сделать так, чтобы выводился любой столбик, но при этом текст не удалять. А чтобы сам файл оставался без изменений
Николай ПН вне форума Ответить с цитированием
Старый 28.10.2010, 00:20   #2
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

интересно, как вы хотите в целочисленную переменную А прочитать строку t[min].

Цитата:
Сообщение от Николай ПН Посмотреть сообщение
я хочу вывести все один из столбиков в memo.
поразборчивее можно...
ICQ: 593-013-807

Последний раз редактировалось Stilet; 28.10.2010 в 08:38.
Don Karleone вне форума Ответить с цитированием
Старый 28.10.2010, 00:28   #3
Николай ПН
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Don Karleone Посмотреть сообщение
интересно, как вы хотите в целочисленную переменную А прочитать строку t[min].
Ну да тут прошу прощения, это уже после всяких выдумок так осталось.
Пусть будет тип real.
Код:
mmoutput.Lines.Add(floattostr(A));
в данном случае у меня в memо выводиться
Код:
1
2
3
4
5
6
7
8
9
10
, но если первые 3 строки предварительно удалить. Зайдя в сам файл.
А как сделать без удаления. Чтобы файл оставался таким всегда, а результат все равно выводился
Код:
1
2
3
4
5
6
7
8
9
10
Николай ПН вне форума Ответить с цитированием
Старый 28.10.2010, 00:30   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте по экспериментировать с readln(F);
до чтения данных(то есть до того как читать данные вставьте три раза)
попробуйте
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.10.2010, 00:31   #5
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от Николай ПН Посмотреть сообщение
Ну да тут прошу прощения, это уже после всяких выдумок так осталось.
Пусть будет тип real.
Ну а как вы в тип реал прочитаете строку t[min]???? t[min] - это строка а не число!
Вам надо вывести только первый столбец в memo?
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 28.10.2010, 00:35   #6
Николай ПН
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Don Karleone Посмотреть сообщение
Ну а как вы в тип реал прочитаете строку t[min]???? t[min] - это строка а не число!
Вам надо вывести только первый столбец в memo?
любой из этих, только без этих элементов
Код:
#		t[min]		M.rot.sp.[Hz]	At.rot.sp.[Hz]	Act.curr[A]
 
0		0
Николай ПН вне форума Ответить с цитированием
Старый 28.10.2010, 00:39   #7
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

сделайте как написал Пепел Феникса. Поставьте перед while четыре readln(f);
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 28.10.2010, 00:50   #8
Николай ПН
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 75
По умолчанию

Спасибо, все работает.
Николай ПН вне форума Ответить с цитированием
Старый 28.10.2010, 20:11   #9
Николай ПН
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 75
По умолчанию

А если такие паразитые строки в середине файла?
Код:
					
1		0.517		001500		001500		130
2		0.933		001500		001501		130
3		1.35		001500		001500		130
4		1.767		001500		001500		130
5		2.2		001500		001500		130
6		2.617		001500		001500		120
#		t[min]		M.rot.sp.[Hz]	At.rot.sp.[Hz]	Act.curr[A]
 
0		0	
7		3.05		001500		001500		140
8		3.467		001500		001500		140
9		3.9		001500		001500		130
10		4.317		001500		001500		130
К примеру так. И не факт, что именно в этом месте.
Николай ПН вне форума Ответить с цитированием
Старый 28.10.2010, 20:14   #10
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

тогда считывайте из файла целую строку readln(f, st), где st: string;
а затем обрабатывайте эту строку, выризайте из нее числа.
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество строк в файле Demien Общие вопросы Delphi 3 17.08.2009 18:48
Пропуск строк программы (Си) persalena Помощь студентам 10 21.02.2009 20:27
Запись и Чтение Имени и пароля в текстовом файле vitamin.rulez Помощь студентам 10 22.01.2009 20:32
Чтение/Поиск в txt файле и вывод в ComboBox limnique Общие вопросы C/C++ 2 05.09.2008 23:01
Пропуск условия if. Delphi 7 Дикий Помощь студентам 11 12.05.2008 22:49