Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Помогите с такой проблемой. Есть текстовый файл. Он содержит данные, которые имеют символ-разделитель ":", также имеются заголовки между данными. Надо эти данные перенести в таблицу dbf. Подскажите общую концепцию решения. Какие функции использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 05:55 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
командой append from <filename> delimited with character ":" но, что такое "имеются заголовки между данными" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 06:16 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
Lena_yanЗдравствуйте! Помогите с такой проблемой. Есть текстовый файл. Он содержит данные, которые имеют символ-разделитель ":", также имеются заголовки между данными. Надо эти данные перенести в таблицу dbf. Подскажите общую концепцию решения. Какие функции использовать? Все правильно сказано в предыдущем сообщении. Однако, если есть какие-либо "шероховатости", не позволяющие прямо использовать append from, то лучше использовать низкоуровневый доступ к файлам (fopen,fread,fgets и т.д.). В этом случае придется почти все "делать руками", зато можно сделать "почти все". Главное, чтобы формат файла строго выдерживался... Один раз мне пришлось в dbf-ку вносить данные из текстового файла следующего формата: 1-я строка: количество записей в файле 2-я строка: Исходящие характеристики файла (дата формирования, кто формировал, откуда и т.д.) 3-я строка: № заказа 4-я строка и до конца файла: позиции заказа (код, количество), разделенные ":" И ничего не оставалось делать, кроме как работать через низкоуровневый доступ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 07:49 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
Дмитрий Маликов После append from какой тип будет у полей в таблице. Все будут char? Но там есть и числа. А заголовки между данными - это сначала название "Справка такая-то", потом данные в виде таблице разделенные ":". Через n-строк опять "Справка такая-то" и опять данные. Станислав С У меня почти такой же формат текстового файла. 1-я строка: Информация о системе, которая сделала этот файл 2-я строка: Кто сделал 3-я строка: Заголовок (Справка о погрузке сухогрузов) 4-я строка: За какой период 5-я строка: Дата формирования 6-я строка: символы (=========) 7-я и 8-я строки: заголовки столбцов 9-я строка: символы (--------) 10-я строка: название порта 11-я строка: название судна с 12 по n - данные разделенные : на n+1 - название судна с n+2 по ...... - опять данные разделенные : И так несколько справок в одном файле. Можно поподробней про функции? Я понимаю так: 1.Надо прочитать строку 2.Разобрать ее 3.Вставить соответствующие данные в соответствующие столбцы А как организовать переход к следующей строке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 08:27 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
команда append применяется к уже созданной и открытой в текущей рабочей области таблице структура таблицы должна соответствовать структуре данных в текстовом файле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 08:32 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
по описанию текстового файла видно, что комманду append применить не получиться, нужно программно разбирать строки, как сказано в сообщении от Станислав C. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 08:36 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
Lena_yanА как организовать переход к следующей строке? команда чтения из файла fget() как раз и возвращает следующую строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 08:39 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
Lena_yan Можно поподробней про функции? Я понимаю так: 1.Надо прочитать строку 2.Разобрать ее 3.Вставить соответствующие данные в соответствующие столбцы А как организовать переход к следующей строке? При низкоуровневом доступе к файлам можно рассматривать файл как одну очень длинную строку. Если Вы помните, что такое бобинные магнитофоны, то можно файл сравнить с лентой на бобине, а указатель на текущую позицию - с магнитной головкой. При открытии файла при помощи fopen() указатель устанавливается на начало файла. Функции чтения из файла (fread(),fgets()) смещают указатель на считанное число байт. Так что, если Вы считываете строку целиком, то переход на следующую (позиционирование указателя) происходит автоматически. Иначе, необходимо отслеживать появление в считанных данных пары "возврат каретки-перевод строки". Хотя про работу с этими функциями (fopen,fread,fgets и т.д.) подробно написано в Фоксовом Хелпе, я порекомендовал бы прочитать что-нибудь другое, например Хелп из С++/ДОС (типа Quick C, TC и т.д.) по работе файлами. Там это объяснено, как мне кажется, лучше... Ну, или прочитайте соответствующий раздел в учебниках по С/С++... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 08:43 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
а так ? g=fopen('...',2) for i=1 to 11 s=fget(g) endfor do while !eof() s=fget(g) if(at(s,':')#0) s1=substr(s,1,at(s,':')-1) s2=substr(s,1,at(s,':',2)-1) .................... insert into t1 (f1,f1) values (s1,val(s2)) endif enddo fclose(g) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 09:19 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
з.ы. создание таблицы проверка кода на ошибки и обеспечение безопасности при сканировании файла за вами а так код примерно такой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 09:22 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
спасибо всем за отклики :) Буду пробовать. Еще такой вопрос: У этого файла Кодовая страница - DOS (866) Как перед открытием файла задать эту кодировку, а то всякие иероглифы получаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 09:27 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
Lena_yanЕще такой вопрос: У этого файла Кодовая страница - DOS (866) Как перед открытием файла задать эту кодировку, а то всякие иероглифы получаются? есть такие фунции, как cpconvert() и oemtoansi() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 09:53 |
|
||
|
Текстовый файл в dbf
|
|||
|---|---|---|---|
|
#18+
..... s=cpconvert(866,1251,fget(g)) .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2004, 10:03 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32798923&tid=1595304]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 401ms |

| 0 / 0 |
