powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Найти вхождение строки в конце файла
6 сообщений из 6, страница 1 из 1
Найти вхождение строки в конце файла
    #39810609
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть текстовый файл большого размера, чтоб не перебирать все строки файла(размер строк >255 символов, кол-во строк около 100000), как можно уйти на конец последней строки(или начать перебор строк с последней строки) и найти строчку "xxx"?
...
Рейтинг: 0 / 0
Найти вхождение строки в конце файла
    #39810628
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Есть текстовый файл большого размера, чтоб не перебирать все строки файла(размер строк >255 символов, кол-во строк около 100000), как можно уйти на конец последней строки(или начать перебор строк с последней строки) и найти строчку "xxx"?

С конца файл читает tail -n
...
Рейтинг: 0 / 0
Найти вхождение строки в конце файла
    #39810722
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алгоритм поиска последней строки такой: читаешь последние N байт файла, заведомо больше чем одна строка, например 1024
Код: sql
1.
2.
3.
4.
5.
	lnF = fopen(tcFile)
	if lnF > 0
		lnFpos = fseek(lnF, 1024, 2) && Указатель в файле 1024 с конца
		lcBuf = fread(lnF, 1024) && Чтение последних 1024 байта
...


затем разбираешь lcBuf на строки.
...
Рейтинг: 0 / 0
Найти вхождение строки в конце файла
    #39811088
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ, но только что-то не понятно...
lnFpos = fseek(lnF, 1024, 2) && Указатель в файле 1024 с конца
т.е. указатель встал на конец файла, и пытается продвинуться вперёд на ещё 1024 байта (в итоге пустая строка)
сделал кол-во байтов отрицательной lnFpos = fseek(lnF, -1024, 2), но опять не то, как мне из этой переменной выделить строку, т.е. как прочитать кол-во байтов до символа перевода каретки...
...
Рейтинг: 0 / 0
Найти вхождение строки в конце файла
    #39811104
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1Спасибо за ответ, но только что-то не понятно...
lnFpos = fseek(lnF, 1024, 2) && Указатель в файле 1024 с конца
т.е. указатель встал на конец файла, и пытается продвинуться вперёд на ещё 1024 байта (в итоге пустая строка)
сделал кол-во байтов отрицательной lnFpos = fseek(lnF, -1024, 2), но опять не то, как мне из этой переменной выделить строку, т.е. как прочитать кол-во байтов до символа перевода каретки...
Да, действительно -1024, как-то нездорово в фоксе сделали, не как везде.

Разбить на строки можно с помощью ALINES()

Или можешь по-другому сделать, через fgets()
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
	lnF = fopen(tcFile)
	if lnF > 0
		fseek(lnF, -1024, 2) && Указатель в файле 1024 с конца
		fgets(lnF) && Чтение до конца текущей неполной строки
		do while !feof(lnF)
			? fgets(lnF, 1024) && Чтение полной строки
		enddo
	endif
	fclose(lnF)
...
Рейтинг: 0 / 0
Найти вхождение строки в конце файла
    #39811178
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Найти вхождение строки в конце файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]