Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 624

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Подскажите пожалуйста, возможно ли сделать так, чтобы в Label указывался текст из определенной строки текстового файла с расширением TXT. Если возможно, то как?
Например из 3-й строки.

Paroonalitik Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Paroonalitik (статус: Посетитель)
Вопрос отправлен: 6 сентября 2011, 18:22
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: DNK

Здравствуйте, Paroonalitik!
Примерно так.

procedure TForm1.FormCreate(Sender: TObject);
var Txt: TextFile;
  cnt: integer;
  s: string;
begin
  cnt := 1;
  AssignFile(Txt, paramstr(1));
  Reset(Txt);
  try
    while not eof(Txt) do begin
      ReadLn(Txt, s);
      if cnt = 3 then begin
        Label1.Caption := s;
        exit;
      end;
      inc(cnt);
    end;
  finally
    CloseFile(Txt)
  end;
end;

Ответ отправил: DNK (статус: Студент)
Время отправки: 6 сентября 2011, 18:31
Оценка за ответ: 5

Комментарий к оценке: ох, спасибо большое, буду пробовать.
хотя код не понимаю совсем

Ответ #2. Отвечает эксперт: Егор

Здравствуйте, Paroonalitik!
Ещё такой вариант:

procedure TForm1.Button1Click(Sender: TObject);
var
  lines : TStringList;
  num : integer;
begin
  num := 3;
  lines := TStringList.Create;
  lines.LoadFromFile('my_file.txt');
  if lines.Count >= num then
    caption := lines[num - 1]; // нумерация идёт с нуля, поэтому num-1
 
  lines.Destroy;
end;

Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 6 сентября 2011, 18:51


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 6 сентября 2011, 21:46; участников в обсуждении: 3.
Егор

Егор (статус: 10-ый класс), 6 сентября 2011, 18:52 [#1]:

DNK: а файл кто закрывать будет? :)
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
Paroonalitik

Paroonalitik (статус: Посетитель), 6 сентября 2011, 19:09 [#2]:

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

DNK (статус: Студент), 6 сентября 2011, 19:30 [#3]:

Егор: А секция finally на что?
"Digital Networked Knight"
Егор

Егор (статус: 10-ый класс), 6 сентября 2011, 19:47 [#4]:

эммм... :) точно, ступил :) звиняюсь
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
DNK

DNK (статус: Студент), 6 сентября 2011, 21:46 [#5]:

Paroonalitik: Я уж думал что тут всё понятно.
procedure TForm1.FormCreate(Sender: TObject);
var Txt: TextFile;
  cnt: integer;
  s: string;
begin
  // счетчик строк
  cnt := 1;
  // открываем файл
  AssignFile(Txt, paramstr(1));
  Reset(Txt);
  try
    // цикл пока не кончился файл
    while not eof(Txt) do begin
      // читаем очередную строку
      ReadLn(Txt, s);
      // если счетчик достик 3
      if cnt = 3 then begin
        // заносим строку в метку и выходим
        Label1.Caption := s;
        exit;
      end;
      // увеличиваем счетчик на 1
      inc(cnt);
    end;
  finally
    // закрываем файл, по-любому
    CloseFile(Txt)
  end;
end;
"Digital Networked Knight"

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:54
Выполнено за 0.02 сек.