Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Считывание текстового файла более 300 Мб / 16 сообщений из 16, страница 1 из 1
04.07.2013, 10:46
    #38320040
ProgramGirl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
Доброго времени суток!

Помогите пожалуйста в решении такой проблемы, нужно считать данные с текстового файла более 300 метров. Код:
for ix = 1 to ALINE(aParse,FileToStr(tekfail))
IF AT(fam+'|Специалист по ведению архива|',AParse[m.ix])=0 then
new_str=new_str+aParse[m.ix]+CHR(13)+CHR(10)
endif

ENDFOR


не работает, т.к. функция FileToStr(tekfail)) выдает ошибку недостаточно памяти.

Код:
SET MEMOWIDTH TO 700
CREATE CURSOR Contents(Content M)
APPEND BLANK
APPEND MEMO Content FROM ALLTRIM(tekdir+'\spto\'+ALLTRIM(maskbkdox(i,1)))

FOR ix=1 TO MEMLINES(Content)
if ATLINE(fam+'|Специалист по ведению архива|', MLINE(content,ix))=0 then
res_str=''
res_str=MLINE(content,ix)+CHR(13)+CHR(10)
STRTOFILE(res_str, newfail,.T.)
endif
WAIT WINDOW 'Работаем'+tekfail nowait
endfor

работает сутками.

Помогите пожалуйста в решении проблемы
...
Рейтинг: 0 / 0
04.07.2013, 10:59
    #38320067
SoftwareBoy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
Раз всё равно читается весь файл, почему не читать его построчно (FGETS)? С каждой строкой сразу делать что нужно.
...
Рейтинг: 0 / 0
04.07.2013, 11:43
    #38320166
ProgramGirl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
По fgets не пробовала, но там же надо указывать сколько байтов считывать нужно. Если возможно, напишите пример кода.
...
Рейтинг: 0 / 0
04.07.2013, 12:24
    #38320259
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
ProgramGirlПо fgets не пробовала, но там же надо указывать сколько байтов считывать нужно. И Вы сие утверждение можете подтвердить цитатой из документации?
...
Рейтинг: 0 / 0
04.07.2013, 12:29
    #38320274
ProgramGirl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
Это необязательный параметр, но как вы себе тогда представляете считывать построчно. Всё же хочется увидеть пример кода
...
Рейтинг: 0 / 0
04.07.2013, 12:50
    #38320332
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
ProgramGirlкак вы себе тогда представляете считывать построчно.Точно так же ка и Ваше
Код: sql
1.
res_str=MLINE(content,ix)+CHR(13)+CHR(10) 
...
Рейтинг: 0 / 0
04.07.2013, 12:57
    #38320347
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
ProgramGirlЭто необязательный параметр, но как вы себе тогда представляете считывать построчно. Всё же хочется увидеть пример кода

Как построчно считать файл низкого уровня
...
Рейтинг: 0 / 0
04.07.2013, 13:00
    #38320353
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
...
Рейтинг: 0 / 0
04.07.2013, 22:48
    #38321253
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
Код: sql
1.
2.
3.
4.
5.
6.
create cursor contents (f1 c(254), f2 c(254), f3 c(254), f4 c(254))
append from (m.tekfail) type SDF

* Смотрим, что получилось
select cotents
browse
...
Рейтинг: 0 / 0
05.07.2013, 04:37
    #38321332
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
PaulWist,

Посмотрел пример от "piva", но возник вопрос, как можно объявить в этом примере переменную "o", например для работы с Excel, писал всегда
LOCAL loexcel AS excel.APPLICATION
loexcel=CREATEOBJECT('Excel.Application')

а для работы с Scripting.FileSystemObject, как объявить переменную o
o=CreateObject("Scripting.FileSystemObject")
...
Рейтинг: 0 / 0
05.07.2013, 05:04
    #38321334
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
q1w1e1LOCAL loexcel AS excel.APPLICATIONСтранно... Обычно при позднем связывании используется просто
Код: sql
1.
LOCAL loApp AS Object


Ваш вариант (с явным указанием типа) требует подключенной библиотеки в референсах. Хотя, ваша правда, - при этом IntelliSense хоть работает...

Scripting.FileSystemObject - это часть объектной модели Windows Scripting Host, можете подключить его.
...
Рейтинг: 0 / 0
05.07.2013, 06:58
    #38321349
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
что надо написать в Local для переменной o для WSH, чтоб подключался IntelliSense, и что значит(или как) подключить WSH
PS: не знаю что такое референс(это же не балет) в вашем контексте(...подключенной библиотеки в референсах)
...
Рейтинг: 0 / 0
05.07.2013, 07:19
    #38321355
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
q1w1e1,
tools - intellisense manager - types - type libraries - отметить "windows script host object model"
Код: sql
1.
2.
3.
4.
LOCAL o as Scripting.FileSystemObject

o=CREATEOBJECT("Scripting.FileSystemObject")
MESSAGEBOX(o.GetDrive('C').FileSystem)
...
Рейтинг: 0 / 0
05.07.2013, 08:07
    #38321376
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
спасибо
...
Рейтинг: 0 / 0
05.07.2013, 11:31
    #38321610
ProgramGirl
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
Помог код предложенный piva :)

PUBLIC gnhandle
new_str=''
res_str=''
strr=''
fam=INPUTBOX('Input','Input')
tekfail=GETFILE()
newfail=ALLTRIM(tekdir+'\spto\result.txt')
o=CREATEOBJECT("Scripting.FileSystemObject")
loFile=o.GetFile(tekfail)
loTextStrem=loFile.OpenAsTextStream()
WITH loTextStrem
DO WHILE NOT .AtEndOfStream
tekline=''
tekline=.ReadLine()
if AT( ALLTRIM(fam+'|Специалист по ведению архива|'), ALLTRIM(tekline))=0 then
res_str=''
res_str=tekline+CHR(13)+CHR(10)
STRTOFILE(res_str, newfail,.T.)
endif

Enddo
.Close()
Endwith

считывает файл за пару минут)
Спасибо всем огромное!

Если можете, киньте ссылку где можно больше прочитать про функции Windows Scripting Host
...
Рейтинг: 0 / 0
05.07.2013, 12:11
    #38321692
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Считывание текстового файла более 300 Мб
ProgramGirlЕсли можете, киньте ссылку где можно больше прочитать про функции Windows Scripting Host

http://www.script-coding.com/WSH.html
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Считывание текстового файла более 300 Мб / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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