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


И мне бы хотелось прочитать из файла сначало только первую строку в отдельную таблицу, затем промежуточные в другую и затем последнюю ;)
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #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
Чтение файла с разделителями
    #32334464
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Cyrus

круто - огромное спасибо
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32334474
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как тоже самое но для файлы с полями фиксированной длины?
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32334499
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати какая версия VFP?
Парсить в массив очень удобно комбинируя fputs() и alines()
или еще проще filetostr() и alines() .
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32334501
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFP7
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32334502
Cyrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А фиксированная длина, имхо, называется SDF, все тоже самое
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32334514
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В VFP7 эти функции работают , но в вашем случае наверное лучше вариант Cyrus
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32334945
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это правда, что в VFP7 в SELECTе будут работать RECNO() и RECCOUNT()?
Как-то не верится.
Что по этому поводу говорит Microsoft?
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32334959
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему они должны там не работать?
Для одной таблицы вполне нормально...
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32334996
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, даже для одной таблицы это недокументированные возможности (заявляю в меру своей осведомленности, могу и ошибаться).
Когда-то я жестоко на этом накалывался, потому что сначала мой запрос с этими функциями работал нормально, а потом (уж не помню, почему) сломался.
Была когда-то в FoxTalk статья вроде "как подружить SELECT и RECNO()". Сейчас помню из нее только то, что без специальных финтов этого сделать нельзя.
Поскольку в РБД нет понятия "физический номер записи", а SELECT - это оператор DML РБД, я для себя решил, что никто, включая разработчиков, мне не дас гарантии, что в FoxPro эта связка будет работать всегда нормально. С тех пор я не связывался в SELECTах с RECNO() больше никогда. И другим не советую.
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32335014
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну может вам не повезло...
В случае если таблица одна и нет удаленных записей я лично не вижу причин возникновения проблем...
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #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
Чтение файла с разделителями
    #32335667
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дугое дело, что Cyrus эту документацию не читал, и поэтому его код правильно работать НЕ будет!
Including an alias or work area in these functions might yield unexpected results
т.е. Recno(),Reccount() и т.д. должны в запросе использоваться БЕЗ параметров.
...
Рейтинг: 0 / 0
Чтение файла с разделителями
    #32335761
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что ж, значит, все-таки задокументировано ;-)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Чтение файла с разделителями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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