|
Вопрос # 5 624/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Подскажите пожалуйста, возможно ли сделать так, чтобы в Label указывался текст из определенной строки текстового файла с расширением TXT. Если возможно, то как?
Например из 3-й строки.
 |
Вопрос задал: 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 (статус: Посетитель), 6 сентября 2011, 19:09 [#2]:
ребята, спасибо большое обоим. оба работают, но буду использовать второй, он короче. хотя если захочу понять работоспостобность, буду рассматривать оба кода.
|
|
DNK (статус: Студент), 6 сентября 2011, 19:30 [#3]:
Егор: А секция finally на что?
"Digital Networked Knight"
|
|
Егор (статус: 10-ый класс), 6 сентября 2011, 19:47 [#4]:
эммм... точно, ступил звиняюсь
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
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"
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|