Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Чтение файла с разделителями / 18 сообщений из 18, страница 1 из 1
25.11.2003, 16:00
    #32334400
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Как это сделать на VFP? Т.е. я планирую использовать FREAD но возможно есть более элегантный способ прочитать поля в массив?
...
Рейтинг: 0 / 0
25.11.2003, 16:06
    #32334407
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
не знай наскока он элегантный, но я б сделал так
1. создать табличку с полями, кот собсна представляют записи
2. APPEND FROM сFileName DELIMITED WITH <тут разделитель>
3. SELECT * FROM МояТабличка INTO ARRAY aMyArray
...
Рейтинг: 0 / 0
25.11.2003, 16:07
    #32334410
Cyrus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Код: plaintext
1.
HELP APPEND FROM 
HELP IMPORT
...
Рейтинг: 0 / 0
25.11.2003, 16:20
    #32334427
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
APPEND FROM - мне нравится, но у меня файл в котором первая и последня строки отличаются по списку полей от все остальных. Т.е. что-то типа
Код: plaintext
1.
2.
3.
AAA|BBB|CCC|
 1232312 | 21312111 | 0 | 5 
ggg|rrrr


И мне бы хотелось прочитать из файла сначало только первую строку в отдельную таблицу, затем промежуточные в другую и затем последнюю ;)
...
Рейтинг: 0 / 0
25.11.2003, 16:33
    #32334442
Cyrus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE CURSOR temp ( fld1 c( 8 ), fld2 c( 8 ), fld3 c( 8 ), fld4 c( 8 ))
APPEND FROM ? DELIMITED WITH '|'
SELECT LEFT(fld1, 3 ) as fld1, LEFT(fld2, 3 ) as fld2, ;
LEFT(fld3, 3 ) as fld3 FROM temp INTO TABLE Table1 ;
WHERE RECNO('temp')= 1 
SELECT VAL(fld1) as fld1, VAL(fld2) as fld2, ;
VAL(fld3) as fld3, VAL(fld4) as fld4 ;
FROM temp INTO TABLE Table2 ;
WHERE RECNO('temp')> 1  AND RECNO('temp')<RECCOUNT('temp')
SELECT LEFT(fld1, 3 ) as fld1, LEFT(fld2, 4 ) as fld2 ;
FROM temp INTO TABLE Table3 ;
WHERE RECNO('temp')=RECCOUNT('temp')
USE IN temp
...
Рейтинг: 0 / 0
25.11.2003, 16:45
    #32334464
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
2Cyrus

круто - огромное спасибо
...
Рейтинг: 0 / 0
25.11.2003, 16:51
    #32334474
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
А как тоже самое но для файлы с полями фиксированной длины?
...
Рейтинг: 0 / 0
25.11.2003, 17:15
    #32334499
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Кстати какая версия VFP?
Парсить в массив очень удобно комбинируя fputs() и alines()
или еще проще filetostr() и alines() .
...
Рейтинг: 0 / 0
25.11.2003, 17:17
    #32334501
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
VFP7
...
Рейтинг: 0 / 0
25.11.2003, 17:17
    #32334502
Cyrus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
А фиксированная длина, имхо, называется SDF, все тоже самое
...
Рейтинг: 0 / 0
25.11.2003, 17:21
    #32334514
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
В VFP7 эти функции работают , но в вашем случае наверное лучше вариант Cyrus
...
Рейтинг: 0 / 0
26.11.2003, 10:17
    #32334945
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Это правда, что в VFP7 в SELECTе будут работать RECNO() и RECCOUNT()?
Как-то не верится.
Что по этому поводу говорит Microsoft?
...
Рейтинг: 0 / 0
26.11.2003, 10:24
    #32334959
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
А почему они должны там не работать?
Для одной таблицы вполне нормально...
...
Рейтинг: 0 / 0
26.11.2003, 10:51
    #32334996
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Вообще-то, даже для одной таблицы это недокументированные возможности (заявляю в меру своей осведомленности, могу и ошибаться).
Когда-то я жестоко на этом накалывался, потому что сначала мой запрос с этими функциями работал нормально, а потом (уж не помню, почему) сломался.
Была когда-то в FoxTalk статья вроде "как подружить SELECT и RECNO()". Сейчас помню из нее только то, что без специальных финтов этого сделать нельзя.
Поскольку в РБД нет понятия "физический номер записи", а SELECT - это оператор DML РБД, я для себя решил, что никто, включая разработчиков, мне не дас гарантии, что в FoxPro эта связка будет работать всегда нормально. С тех пор я не связывался в SELECTах с RECNO() больше никогда. И другим не советую.
...
Рейтинг: 0 / 0
26.11.2003, 11:02
    #32335014
Crip
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Ну может вам не повезло...
В случае если таблица одна и нет удаленных записей я лично не вижу причин возникновения проблем...
...
Рейтинг: 0 / 0
26.11.2003, 15:38
    #32335612
andrew_Pr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
to Urri

См. BOL
Visual FoxPro Language Reference
SELECT - SQL Command

Be careful when using, in join conditions, functions such as DELETED( ), EOF( ), FOUND( ), RECCOUNT( ), and RECNO( ), which support an optional alias or work area. Including an alias or work area in these functions might yield unexpected results. SELECT doesn't use your work areas; it performs the equivalent of USE ... AGAIN. Single-table queries that use these functions without an optional alias or work area will return proper results . However, multiple-table queries that use these functions — even without an optional alias or work area — might return unexpected results.
Так что Crip прав, и все это задокументировано.
...
Рейтинг: 0 / 0
26.11.2003, 15:56
    #32335667
andrew_Pr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Дугое дело, что Cyrus эту документацию не читал, и поэтому его код правильно работать НЕ будет!
Including an alias or work area in these functions might yield unexpected results
т.е. Recno(),Reccount() и т.д. должны в запросе использоваться БЕЗ параметров.
...
Рейтинг: 0 / 0
26.11.2003, 16:47
    #32335761
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение файла с разделителями
Ну что ж, значит, все-таки задокументировано ;-)
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Чтение файла с разделителями / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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