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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2009, 06:57   #1
severin
Пользователь
 
Аватар для severin
 
Регистрация: 23.04.2009
Сообщений: 17
По умолчанию Доступ к строкам в файле .txt

Доброе утро!
Подскажите пожалуйста, как получить строку из файла .txt по номеру этой строки.
Я сделал через невидимый Memo, а мне нужно напрямую

From Stilet: Почему язык не указываем?

Извините забыл
Пишу на Delphi

Последний раз редактировалось severin; 10.11.2009 в 08:59.
severin вне форума Ответить с цитированием
Старый 10.11.2009, 08:06   #2
ИринаForeve
Пользователь
 
Аватар для ИринаForeve
 
Регистрация: 27.04.2009
Сообщений: 48
По умолчанию

Вот один вариант:
Код:
program rf;
uses crt;
var
 n,i:integer;
 f:text;
 s:string;
begin
 clrscr;
 write('vvedite file => ');{ввод имени файла}
 readln(s);
 assign(f,s);
 reset(f);
 write('vvedite N stroki => '); {ввод номера строки}
 readln(n);
 for i:=1 to n do readln(f,s);
 close(f);
 if s='' then writeln('takoi stroki v file net!') {если строки нет}
 else writeln('stroka ',n,': ',s); {если строка есть - вывод}
 readkey;
end.
На скорую руку, по желанию можно что подредактировать

Последний раз редактировалось Stilet; 10.11.2009 в 08:37.
ИринаForeve вне форума Ответить с цитированием
Старый 10.11.2009, 08:17   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Очень удобно через TStringList;
Код:
var ST:TStringList;
      S:String;
      n:integer;
begin
 ST:=TStringList.Create;
 ST.LoadFromFile('путь к файлу');
 n:=ST.Count;// узнаём кол-во строк в файле
 S:=ST[9];//переменной S присваиваем значение десятой строки файла т.к отсчёт идёт с нуля
 ST.Free;
end;
SERG1980 вне форума Ответить с цитированием
Старый 10.11.2009, 08:58   #4
severin
Пользователь
 
Аватар для severin
 
Регистрация: 23.04.2009
Сообщений: 17
По умолчанию

Спасибо, через StringList намного удобнее, чем через Memo, значит напрямую к этим строкам нельзя все таки обращаться, не используя дополнительных компанентов?
severin вне форума Ответить с цитированием
Старый 10.11.2009, 09:18   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,219
По умолчанию

Цитата:
Сообщение от severin
значит напрямую к этим строкам нельзя все таки обращаться, не используя дополнительных компанентов?
Как так, на прямую? Компоненты тут можно и не использовать. Открывайте файл, читайте его по строкам до тех пор, пока до нужной не дойдёте.
Arigato вне форума Ответить с цитированием
Старый 10.11.2009, 09:22   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от severin Посмотреть сообщение
значит напрямую к этим строкам нельзя все таки обращаться, не используя дополнительных компанентов?
TStringList это класс а не компонент
SERG1980 вне форума Ответить с цитированием
Старый 10.11.2009, 10:38   #7
severin
Пользователь
 
Аватар для severin
 
Регистрация: 23.04.2009
Сообщений: 17
По умолчанию

Спасибо за пояснение, а подскажите еще вот что:
в данной процедуре нужно получить m:=n/2;
при компиляции выводится сообщение о несовместимости типов n Extended и m Integer как получтить m?

procedure TForm2.Button2Click(Sender: TObject);
var
s:string;
n:integer;
m:integer;
begin
s:=Memo1.Text;
n:=Length(s);
m:=n/2;
severin вне форума Ответить с цитированием
Старый 10.11.2009, 10:53   #8
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

m - integer т.е цeлое число. Для дробных есть типы single, double и некоторые другие.
Также существует функция round которая округляет чисто до целых:
Код:
m:=round(n/2);
Вадим Буренков вне форума Ответить с цитированием
Старый 10.11.2009, 10:58   #9
severin
Пользователь
 
Аватар для severin
 
Регистрация: 23.04.2009
Сообщений: 17
По умолчанию

это то понятно, но мне потом нужно использовать m для цикла for
severin вне форума Ответить с цитированием
Старый 10.11.2009, 11:00   #10
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Для цикла for подходят только целые значения. Как округлять дробь я показал.
Вадим Буренков вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение команд находящихся в файле .txt SwitchOFF PHP 6 29.10.2009 00:30
Курсовик. Класс, организующий доступ к данным в файле Striker_ Помощь студентам 0 18.06.2009 18:48
JPG и TXT в одном файле prizrak1390 Общие вопросы Delphi 9 19.04.2009 18:45
считать значения в файле.txt ciaonataha Общие вопросы C/C++ 4 30.03.2009 20:06
перезапись значений в файле.txt после сравнения SarahConner Общие вопросы Delphi 0 21.03.2009 00:19