| 
| 
 | Вопрос # 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=14then 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]:Спасибо Вадим К код супер. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |