|
Вопрос # 3 068/ вопрос открыт / |
|
Здравствуйте, эксперты!
Мне надо вывести именно 14-тую строку из текстового файла,
весь файл не проблема, а одну строку неполучается, целый день туплю. приложенный код вроде должен работать, а выдаёт ошибку invalid numeric input
Заранее спасибо.
Приложение: Переключить в обычный режим- dirs: string;
- num_lines,x: integer;
- line1,line2: string;
- f: TextFile;
-
- begin
- if FileExists(Forms_dir + KursNBR_mask) then
- begin
- dirs:=(Forms_dir + KursNBR_mask);
- assignfile(f, dirs);
-
- if IOResult <> 0 then
- begin
-
- exit;
- end;
- readln(f, num_lines);
- for x:= 1 to num_lines do
- begin
- if x=14 then
- begin
- readln(f, line2);
- showmessage(line2);
- end;
- end;
- closefile(f);
- end;
 |
Вопрос задал: slava863 (статус: Посетитель)
Вопрос отправлен: 5 августа 2009, 17:13
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, slava863!
строку readln(f,num_lines); уберите совсем. И цикл for тоже. в данном случае он не нужен.
Сделайте так как написано в приложении:
Приложение: Переключить в обычный режим-
- x:=0;
- while not(eof(f))and(x<14)
- do begin
- readln(f,line2);
- inc(x);
- end;
- closefile(f);
- if x=14
- then showmessage(line2)
-
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 5 августа 2009, 17:24
|
Ответ #2. Отвечает эксперт: Вадим К
Здравствуйте, slava863!
Странный код, перегруженный лишним. я бы решил просто.
var
sl:TStringList;
begin
sl:=TStringList.create;
try
sl.LoadFromFile('имяфайла');
if (sl.count < 14) then begin
ShowMessage('Мало строк в файле');
exit;
end;
ShowMessage(sl[14-1]);
finally
sl.free;
end;
end;
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 5 августа 2009, 17:27
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 6 августа 2009, 09:19; участников в обсуждении: 3.
|
slava863 (статус: Посетитель), 5 августа 2009, 17:30 [#1]:
а если две строки 13(line1) и 14 (line2)
|
|
Вадим К (статус: Академик), 5 августа 2009, 17:34 [#2]:
Если по одиночке, то
ShowMessage(sl[12]);
ShowMessage(sl[14-1]);
если вместе
ShowMessage(sl[14-1] + ' ' + sl[14-1]);
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Вадим К (статус: Академик), 5 августа 2009, 18:34 [#4]:
правда в моем решении есть одна загвоздка. Надо решить, как строки нумеровать. То есть, что считать 14 строкой. я просто их считал от 1 и вперёд. Но так как в первой строке записан номер, то наверно её надо исключить из счета... Но это уже проблемы вопрошающего - всё равно плюс-минус единица...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
slava863 (статус: Посетитель), 6 августа 2009, 09:19 [#5]:
Спасибо Вадим К код супер.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|