:: Visual Foxpro, Foxpro for DOS
Прошу помощи
dominacion

Сообщений: 1
Дата регистрации: 23.03.2017
Добрый день,эксперты!
Поставлена задача срочно решить задачу и именно на фоксе 6.0
Задача довольно простая, но не зная синтаксиса становится невыполнимой. Пишу одной рукой вылазя из горы учебников, пожалуйста не пишите, "Читай учебник" я этим занимаюсь сейчас.
Всем известно что готовый пример это тоже не плохой вариант- как дополнение к учебнику.
Вобщем задача Есть массив данных, в текстовом документе, объем не больше 2гб будет, в данный момент 340 кб. Структура информации в файле:
1043645729011 !21500!001!000000000000010!000000000000010!Вилка ОС 2РМТ14Б4Ш1А1В !
1043645729030 !21500!001!000000000000002!000000000000002!Вилка ОС 2РМТ22Б4Ш3В1В !
1043645730031 !21500!001!000000000000010!000000000000010!Вилка ОС 2РМТ22БПН4Ш3А1В !
1043645760010 !21500!001!000000000000210!000000000000208!Вилка ОС 2РМДТ18КПЭ4Ш5В1В !

Необходимые данные разделены "!"
Необходимо по введенным данным в текстбокс либо импут произвести поиск по всему массиву и вывести информацию на экран в любом виде целую строку. При услвоии что строка такая само собой может быть ни одна. Прошу если есть возможность помочь с кодом, буду благодарен.
Ratings: 0 negative/0 positive
Re: Прошу помощи
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
CREATE CURSOR XXL (A1 C(10), A2 C(10), A3 C(10), A4 C(50), A5 C(10), A6 C(10), A7 C(10))
APPEND FROM "stroki.txt" TYPE DELIMITED WITH CHARACTER "!"
LOCATE FOR XXL.A4="000000000000002"
BROWSE
Вопросы?


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Прошу помощи
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Автор пишет, что результатом поиска может быть не одна строка, то есть предмет поиска не уникален, а потому здесь нужен либо FILTER либо SELECT, либо что еще более извращенное, как, например, цикл по таблице с каждым разом, при нахождении нужного, копируя его куда то или просто помечая.
Учитывая пример Игоря Перминова, я бы его "подточил" примерно так (к примеру, необходимо выбрать все значения четвертого столбца равные 10):
CREATE CURSOR XXL (A1 C(10), A2 C(10), A3 C(10), A4 C(50), A5 C(10), A6 C(10), A7 C(10))
APPEND FROM "stroki.txt" TYPE DELIMITED WITH CHARACTER "! FOR VAL(A4)=10"
BROWSE

К тому же, такая конструкция при гигабайтах текстовика, как мне кажется, и быстрее отработает.



Исправлено 2 раз(а). Последнее : Chemberzhy, 23.03.17 14:54
Ratings: 0 negative/0 positive
Re: Прошу помощи
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
TC будет над чем подумать


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Прошу помощи
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Если уж курсор назвали XXL, то надо было и полям дать соответствующие названия.
Ratings: 0 negative/0 positive
Re: Прошу помощи
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
dominacion
Каким образом и зачем вы создаете этот немаленький текстовый файл, да еще так хорошо структированный?
Ratings: 0 negative/0 positive
Re: Прошу помощи
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
lulgu
структированный
Структурированный, наверное? ;)
dominacion
Поставлена задача срочно решить задачу и именно на фоксе 6.0
Задача довольно простая, но не зная синтаксиса становится невыполнимой. Пишу одной рукой вылазя из горы учебников
Задание, как и родителей, не выбирают, за очень-очень редким исключением.
Читать вопрос следует комплексно, а не по диагонали, тогда и флуда меньше будет в проффоруме.
Ratings: 0 negative/0 positive
Re: Прошу помощи
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Chemberzhy
lulgu
структированный
Структурированный, наверное? ;)
dominacion
Поставлена задача срочно решить задачу и именно на фоксе 6.0
Задача довольно простая, но не зная синтаксиса становится невыполнимой. Пишу одной рукой вылазя из горы учебников
Задание, как и родителей, не выбирают, за очень-очень редким исключением.
Читать вопрос следует комплексно, а не по диагонали, тогда и флуда меньше будет в проффоруме.

Возможно, вы правы.
Но задание не родители - его обдумывают, как выполнить.
Данные текстовые, объем большой, так что не стоит спешить с выводами.
Особенно с употреблением слов типа FILTER.
А если этих число этих LOCATE исчисляется хотя бы сотнями, то вряд ли их заменит APPEND FROM.



Исправлено 2 раз(а). Последнее : lulgu, 24.03.17 00:18
Ratings: 0 negative/0 positive
Re: Прошу помощи
Sawradym
Автор

Сообщений: 2244
Откуда: Винница
Дата регистрации: 15.05.2007
Если файл будет многоразово использоваться для поиска, то его стоит конвертировать в дбф, как показано в предыдущих сообщениях и тогда сделать любые выборки не составит никакого труда. Если это задачка на один раз, то можно сделать так:

LOCAL mFileIn, mFileOut, mFindStr, mStr, mNI, mNO
mFindStr=INPUTBOX('Строка для поиска','INPUT','')
mFileIn = 'MyFileData.dat'
mFileOut = 'MyFileOut.txt'
mNI = FOPEN(mFileIn)
IF mNI<0
* Error
Return
ENDIF
mNO = FCREATE(mFileOut)
IF mNO<0
* Error
=FClose(mNI)
Return
ENDIF
DO WHILE NOT FEOF(mNI)
mStr = FGETS(mNI)
IF mFindStr$mStr
=FPUTS(mNO,mStr)
EndIf
ENDDO
=FClose(mNO)
=FClose(mNI)
modi comm (mFileOut)



Исправлено 1 раз(а). Последнее : Sawradym, 24.03.17 08:44
Ratings: 0 negative/0 positive


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

On-line: 27 alex;  (Гостей: 26)

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