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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2008, 13:30   #1
Pedro
Форумчанин
 
Аватар для Pedro
 
Регистрация: 25.03.2007
Сообщений: 166
По умолчанию Вытащить строчку из файла

Народ помогите, чет я вобще туплю ! У меня есть текстовый файл, в нем 6000-7000 строк, как вытащить из него допустим 233 строку? Нужен самый быстрый способ. Заранее спасибо
Pedro вне форума Ответить с цитированием
Старый 09.12.2008, 13:36   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

есть только один способ. открыть файл. и считывать порции, ну допустим, по 256 байт, обрабатывать символы конца строки #13#10 и считать сколько раз они нам попались. В цикле читаем из файла, обрабатываем, читаем из файла, обрабатываем, читаем из файла, обрабатываем.... в том месте, когда у нас насчиталось 232 переноса начинается 233 строка.
rpy3uH вне форума Ответить с цитированием
Старый 09.12.2008, 13:37   #3
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

В нете поищи(delphi работа с текстовыми файлами), есть функция которая переносит сразу на нужную строку.

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
есть только один способ. открыть файл. и считывать порции, ну допустим, по 256 байт, обрабатывать символы конца строки #13#10 и считать сколько раз они нам попались. В цикле читаем из файла, обрабатываем, читаем из файла, обрабатываем, читаем из файла, обрабатываем.... в том месте, когда у нас насчиталось 232 переноса начинается 233 строка.
извени но это маразм.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.

Последний раз редактировалось rpy3uH; 09.12.2008 в 13:44.
Deight вне форума Ответить с цитированием
Старый 09.12.2008, 13:42   #4
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Код:
var  f: TStringlist;
               _stroka: snring;
               N_str: integer;
begin
  f:= TStringList.Create;
  f.LoadFromFile('FileName.txt');
  N_str:= 233;
  _stroka:= f.Strings[N_str];
  Form1.Canvas.TextOut(100,100,_stroka);
  f.Free;
end;
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 09.12.2008, 13:45   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

DeKot, сам подумай.
Допустим файл весит 600 МБ. Мы сначала подождём пока всё это не грузанётся в память с диска, потом с памяти будем всё это обрабатывать чтобы получить массив Strings в объекте TStringList. притом обработается весь файл а если нам нужен только 10 элемент, а обработается всё. в данной задаче это неприемлемо.

Цитата:
Сообщение от Deight Посмотреть сообщение
извени но это маразм.
а что тогда не маразм? посмотрим как работает та стандартная функция...

Последний раз редактировалось rpy3uH; 09.12.2008 в 13:51.
rpy3uH вне форума Ответить с цитированием
Старый 09.12.2008, 13:56   #6
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Вопрос был - читаем внимательно
Цитата:
У меня есть текстовый файл
Тогда байты нам не нужны.("Кто такой байт? Он что Ваш родственник?"
(Ильф и Петров)).Работаем чисто с текстом.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 09.12.2008, 13:58   #7
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Вопрос на засыпку, кто знает зачем нужна функция seek.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 09.12.2008, 14:02   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Deight, с тебя тест чтения из файла размером 700 МБ строки под номером 5 от конца. скажешь сколько минут на это тратится.

Последний раз редактировалось rpy3uH; 09.12.2008 в 14:05.
rpy3uH вне форума Ответить с цитированием
Старый 09.12.2008, 14:06   #9
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Где я найду текстовый файл размером 700 метров?
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 09.12.2008, 14:11   #10
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Цитата:
зачем нужна функция seek.
Для типизированных файлов(и не типизированных, ну вобще для НЕ текстовых )применяют TFileStream.
Там ф-ия seeK устанавливает курсор в нужную позицию
f.seek(<N поз(int)>,<so....(сначала;с конца;с текущего>);
TO ГруЗин - Практически может на практике применяться работа с файлами 600 Мб (Не считаю БД)
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 09.12.2008 в 14:15.
DeKot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните строчку, пожалуйста Manya Общие вопросы C/C++ 2 20.11.2008 16:02
Рразъясните строчку. Amen Помощь студентам 11 30.08.2008 02:45
Как с поиощью hiew вставить в файл строчку, "раздвинуть" файл и вставить туда строчку? barand Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.06.2008 10:58
DBLookupComboBox на первую строчку Inbox БД в Delphi 7 29.10.2007 13:26
HELP! Как мне вытащить текст из файла? kl45gp Общие вопросы Delphi 12 17.08.2007 22:26