|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.12.2008, 14:18 | #11 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
вот. 975*000*000 bytes на моём комьютере создаётся за 55 секунд... ;-) Код:
|
|
09.12.2008, 14:18 | #12 | |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
Цитата:
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
|
09.12.2008, 14:43 | #13 |
Бредовый
Форумчанин
Регистрация: 15.11.2008
Сообщений: 285
|
Не грузите может функция не seek называлась. Я уже не помню. Точно помню она перемещала положение на нужную строку именно в текстовом файле.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
|
09.12.2008, 17:08 | #14 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
Про функцию не знаю, но для объектов типа TStrings есть свойство CaretPos, указывающее на текущее положение курсора.
CaretPos это переменная типа TPoint (тип запись).Методов она не имеет, а есть свои свойства X и Y - колонка и строка. Например: Memo1.Lines.Strings[Memo1.CaretPos.Y]:= 'Это строка Y'; Там в TStrings есть еще ф-ии Get(№строки) - возвращает строку с №; IndexOf(string) - ищет указанную строку и если найдена, возвращает индекс строки.Иначе - 1
И не сомневайся даже ... отдых - кайф, работа - лажа!
Последний раз редактировалось DeKot; 09.12.2008 в 17:13. |
09.12.2008, 19:50 | #15 |
Форумчанин
Регистрация: 25.03.2007
Сообщений: 166
|
Походу тока два варианта: либо перебирать строки циклом, либо грузить в память и работать по простому. И то и другое долго. А нет ли способа установить курсор в файле на позицию определенного символа?
|
09.12.2008, 20:39 | #16 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
так ведь ещё надо определить положение где начинается нужная строка. Алгоритм поиска я описал, во втором посте.
|
09.12.2008, 21:39 | #17 |
Ra-Ra ?
Форумчанин
Регистрация: 06.03.2008
Сообщений: 286
|
Мб проще не генерить 1 текстовик а нное число, для более быстрой загрузки без замутов с разбиением по байтам.
А с Грузином я полностью согласен, поскольку чтобы работать с файлом, нам его надо сначала загрузить в оперативную память, а потом уже делать с ним махинации, налету с харда тока по кусочкам, как было описано. И всякие высказывания типа проще поюзать функцию которая нам ставит в 700мб-ом текстовике курсорчик куда надо - помоему крайне непродуманны. Поскольку имеется в виду обычный бегунок который виден когда печатаешь, а он появляется только при открытом файле. 2Degit Почитайте учебник по турбо паскалю 7.1, там чорным по белому написано что любой файл, включая текстовый (который рассматривался в данный момент), представляет из себя набор байтов, несущих определённую информацию. Каждый файл начинается с, байта с тегой НАЧАЛО ФАЙЛА и заканчивается байтом с тегой КОНЕЦ ФАЙЛА. Далее идут байты несущие информацию файла, включая теги начала и конца строки. |
09.12.2008, 22:31 | #18 | |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Цитата:
И не нужно наезжать на Грузина, ведь требовалось дать самый быстрый способ, а самый-самый - это считывать кусками и искать концы строк, вот Грузин его и предложил, а ты пока не предложил ничего. |
|
09.12.2008, 22:35 | #19 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Zeraim, я со всеми Вашими высказываниями согласен, кроме:
Цитата:
|
|
09.12.2008, 22:41 | #20 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
- либо грузить файл в TStringList.loadFromFile - прямой доступ к любой строке, - либо читать построчно (очень быстро для первых строк, ОЧЕНЬ медленно, для последних! я, например, категорически не рекомендую этот способ, чтобы подсчитать количество строк в файле, если текстовый файл может быть большого размера!) - предварительно проиндексировать файл - запомнить смещения от начала файла всех строк в специальном индексном файлике, его грузить в память и позиционироваться в текстовом файле по этому индексу. Этот способ имеет право на жизнь только если работать с текстовым файлом надо много и часто и он не меняется... можно посмотреть в сторону БД. Либо хранить строчки ФИКСИРОВАННОЙ длины... вариантов решения — масса. Всё зависит от конктретной задачи! |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объясните строчку, пожалуйста | 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 |