:: Visual Foxpro, Foxpro for DOS
Re: посчитать символы CR в мемо-поле
Ydin

Сообщений: 7648
Откуда: Киев
Дата регистрации: 16.12.2005
glaz58
Может быть ALINES() эффективнее (а как измерить?)

Я измерял. Это самое быстрое, просто удивительно быстрое.
Я парсил часто за свою последнюю жизнь.
Конечно, по ситуации, но ALINES() - где только можно!
Ratings: 0 negative/0 positive
Re: посчитать символы CR в мемо-поле
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
akvvohinc
Цитата:
в ... тем более в несчсчастных "100мБ"... и 16Мб - там не "строго"... просто непредсказуемо
Я постоянно пользуюсь таким вариантом - FILETOSTR(), никогда не проверяю размер файла (конечно, даже 50Mб встречаются у меня не часто), и, понимая что когда-нибудь программа может свалиться, иду на такой "риск".
Пока ни разу не случилась ситуация, чтобы такие строки вызвали проблему (ошибку), так что удобство работы с "одной длинной строкой" пока перевешивает.
Так что я знаю о "непредсказуемости", но пренебрегаю рисками, считая их крайне низкими на современных компах.

Иногда мне приходится работать с видео-файлами - они обычно существенно больших размеров, чем разные виды "текстовых".
Там риск уже становится неуместен - ошибки будут случаться чаще, чем нормальная работа.
В этих случаях приходится работать с файлами по частям, загоняя их в строку функциями низкого уровня - FREAD()/FWRITE()/FSEEK().

PS
А вообще я охотнее откликаюсь на имя Сергей.


Сергей! "А может быть не помню, но буду вспоминать" ) Извини, все мы тут под кличками, кличка не очень читаемая, поэтому по имени пытался, не сверился с именником... "в печку его" ) ... )

Все чаще появляются файлы >2Г, (в т ч и XML, чаще CSV, какой-то "выгружатель" из SQL-баз это делает, ребята не заморачиваются, передавая такие файлы...). про большие файлы вообше нет возможности прочитать, ктоме как последовательным чтением... Еще есть возможность открыть файл как битовую/байтовую карту - тоже очень хороший подход... Но про мелкие файлы:

"Риски" небольшие при чтении и меньших размеров файлов, например, 100Мб, не понятно, прочитался ли файл полностью, или частично, или была ошибка - FILETOSTR такой инфы не возвращает. Призодится писать обвес этой нативной ф-ии, чтобы , например, она возвращала NULL при невозможности чтения, чтобы пищала/писаланаэкране невозможность чтения... все такое, усложнение кода, усиление непонятности кода. Но таков путь...

() Узнать успешность чтения файла можно сравнив размер переменной с размером файла, например... и всякие другие предположения про ОС...

Есть некая параноидальность в достижении всеядности твое проги, она излишняя в обычных случаях (не не лишняя в экстремальных)
Вот пример. Что я написал вместо FGETS - я ее усложнил от чтения "ВКПС-строк", но до чтения блоков в ZIP-файле... это мой "путь" )



Исправлено 2 раз(а). Последнее : of63, 14.02.23 23:15
Ratings: 0 negative/0 positive
Re: посчитать символы CR в мемо-поле
Vedmak

Сообщений: 5949
Откуда: CiTY
Дата регистрации: 30.10.2003
Ниже метод моего класса для ведения лога приложения на основе 'Scripting.FileSystemObject'. Возможно это поможет рассмотреть текстовый файл как "поток" и искать в нём нужные повторения.

FUNCTION write
LPARAMETERS lcText, lnLevel
IF EMPTY( lnLevel )
lnLevel = log_level_info
ENDIF
if lnLevel < This.level &&or EMPTY( lcText )
RETURN goApp.error_id = no_error
ENDIF
LOCAL loFso, loFsoFile, loFsoStream
loFso = CREATEOBJECT('Scripting.FileSystemObject')
IF !FILE( This.File )
loFso.CreateTextFile( This.File )
ENDIF
loFsoFile = loFso.GetFile( This.File )
loFsoStream = loFsoFile.OpenAsTextStream( ForAppending, TristateUseDefault )
for lnLine = 1 TO MEMLINES( lcText )
lcLine = TIME(1) + TAB + "["+log_level_name( lnLevel )+"]" + TAB + MLINE(lcText,lnLine) + CRLF
loFsoStream.Write( NVL(lcLine,'') )
endfor
loFsoStream.Close()
RETURN goApp.error_id = no_error
ENDfunc


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: посчитать символы CR в мемо-поле
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Конечно, если использовать Фокс как макроязык управления обьектом FSO, то да. Можно использовать возможности ФСО, ограничений его не знаю. Есть вероятность, что этот тобьект тоже 32-приложение, хз...
Ratings: 0 negative/0 positive
Re: посчитать символы CR в мемо-поле
akvvohinc
Автор

Сообщений: 4201
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Можно использовать возможности ФСО
У ФСО, конечно, есть какие-то возможности.
Вот только к теме "посчитать символы CR в мемо-поле" они отношения не имеют.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 42 akvvohinc  (Гостей: 41)

© 2000-2024 Fox Club 
Яндекс.Метрика