powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / GetWordNum() и 2 табуляции подряд
14 сообщений из 14, страница 1 из 1
GetWordNum() и 2 табуляции подряд
    #33533680
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть текстовый файл:
Код: plaintext
1.
2.
3.
4.
5.
6.
27 . 01 . 2006   21 : 26 : 5679224061576 →S→ 600 . 0027 . 01 . 2006   21 : 30 : 5379224061576 →S→ 501 . 7027 . 01 . 2006   21 : 31 : 05 →→S→ 600 . 0028 . 01 . 2006   19 : 20 : 4379136643293 →→ 1434 . 80 

→ - табуляция
я его читаю построчно и путем GetWordNum(...) записываю в таблицу.
Проблема в том, что 2 табуляции подряд не распознаются как 2 поля.
Как с этим справится?
VFP 9
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33533768
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 w3d
Незнаю поможет ли моя идея. Перед GetWordNum делать проверку на две табуляции если есть лишняя тол замещать ее на ''.
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33533781
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне как раз не надо ее ни на что заменять!
Мне надо чтоб 2 табуляции распознавались как 2 поля; сейчас же getwordnum() сливает 2 табуляции подряд в одно.
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33533790
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соответственно, таблица заполняется неправильно.

Возможно, есть другой вариант по заполнению таблицы из текстового файла?
В файле кроме собственно данных еще куча информации, напрямую взять не получится.
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33533831
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 w3d
посмотри здесь http://www.sql.ru/forum/actualthread.aspx?tid=99178&hl=getwordcount
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33533868
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
tt = chr( 9 )+'27.01.2006 21:26:56'+chr( 9 )+'79224061576'+chr( 9 )+'S'+chr( 9 )+'6'+chr( 9 )+'0'+chr( 9 )+'0.00'
? alines(aa,tt,chr( 9 ))
? aa( 1 )
? aa( 2 )
? aa( 3 )
? aa( 4 )
? aa( 5 )
? aa( 6 )
? aa( 7 )
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33533959
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по простому?

Код: plaintext
1.
2.
select MyTab
APPEND FROM MyFile.txt TYPE DELIMITED WITH TAB
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33534190
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 alex11100
Спасибо, то что надо!

2 ВладимирМ
Нет, там в файле еще куча текста лежит.

Еще вопрос:
Открываю файл fopen, fclose стоит в конце программы; если происходит сбой, то файл остается открытым. Как его можно закрыть?
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33534236
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
.........
local lnFile
lnFile =  0  
readfromfile(@lnFile)
if lnFile> 0 
  =fclo(lnFile)
endif
........
........

proc readfromfile
lpara tnFile
tnfile = fope("cvvv")
........
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33534243
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
w3d2 alex11100
Спасибо, то что надо!

2 ВладимирМ
Нет, там в файле еще куча текста лежит.

Еще вопрос:
Открываю файл fopen, fclose стоит в конце программы; если происходит сбой, то файл остается открытым. Как его можно закрыть?
Смотря что за сбой...
Если "вываливается" вся программа (+закрывается Фокс), то можно дополнительно не закрывать - само закроется при освобождении ресурсов системой.
Если же "вываливается" с сообщением об ошибке, то надо организовать обработчик ошибок и уже в нем делать закрытие ( fclose() ) твоего файла...
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33534388
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка: fopen(gcFile,10) возвращает -1
После закрытия фокса все работает нормально.
Как я понял, файл просто остается открытым; так вот как его можно закрыть при следующем запуске программы?
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33534412
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, представляю: парсер корпоративных отчетов по переговорам "Мегафон".
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
*******************************
* обработка файлов от Мегафон *
*******************************
* создаем курсоры
CREATE CURSOR razgovor (tel N( 10 , 0 ), data C( 20 ), nomer C( 20 ), kod c( 5 ), tip I, dlit N( 10 , 3 ), vsego N( 10 , 3 ))
CREATE CURSOR rouming (tel N( 10 , 0 ), data C( 20 ), nomer C( 20 ), kod c( 5 ), tip I, dlit N( 10 , 3 ), vsego N( 10 , 3 ), oper c( 30 ))
* открываем файл
gcFile=GETFILE('txt','Открыть файл мегафона','Открыть', 0 ,'Импорт отчета "Мегафон"')
ff=fopen(gcFile, 10 )
IF ff> 0  THEN 
	ppp= 0 
	roum= 0 
DO WHILE !feof(ff)
	* считываем построчно
	iii=fgets(ff) 
	kkk=alines(aa,iii,chr( 9 ))
	IF kkk >  2  THEN 
		nnn=aa( 2 )
		ttt=aa( 3 )
	ELSE 
		nnn=""
		ttt=""
	ENDIF 
	* поставим флаг, если началась ведомость
	IF alltrim(nnn)=='Ведомость разговоров. Телефон' THEN 
		ppp= 1 
		telefon=VAL(RIGHT(ttt,LEN(ttt)- 3 ))
	ENDIF 
	* роуминг
	IF alltrim(nnn)=='Ведомость разговоров при роуминге. Телефон' THEN 
		roum= 1 
		telefon=VAL(RIGHT(ttt,LEN(ttt)- 3 ))
	ENDIF 
	* сбросим флаг, если закончилась ведомость
	IF alltrim(nnn)=='Итого' THEN 
		IF ppp= 1  then
			ppp= 0 
		ENDIF
		IF roum= 1  then
			roum= 0 
		ENDIF 
	ENDIF 
	* добавляем запись в таблицу разговоров
	IF kkk= 7  AND ppp= 1  THEN 
		SELECT razgovor
		APPEND BLANK
		replace tel WITH telefon
		replace data with aa( 2 )
		replace nomer WITH aa( 3 )
		replace kod WITH aa( 4 )
		replace tip WITH VAL(aa( 5 ))
		replace dlit WITH VAL(aa( 6 ))
		replace vsego WITH VAL(aa( 7 ))
	ENDIF 
	* добавляем запись в таблицу роуминга
	IF kkk= 8  AND roum= 1  AND alltrim(aa( 2 ))!="Дата" THEN 
		SELECT rouming
		APPEND BLANK
		replace tel WITH telefon
		replace data with aa( 2 )
		replace nomer WITH aa( 3 )
		replace kod WITH aa( 4 )
		replace tip WITH VAL(aa( 5 ))
		replace dlit WITH VAL(aa( 6 ))
		replace vsego WITH VAL(aa( 7 ))
		replace oper WITH aa( 8 )
	ENDIF 
ENDDO 
	fclose(ff)
	messagebox("Готово!")
ELSE 
messagebox("Ошибка открытия файла!")
ENDIF 

Сделано за несколько часов, но тем не менее работает.
Расшифровка переговоров должна быть в формате *.txt
Если кому надо - берите, будут идеи по усовершенствованию - охотно приму.
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33534544
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ой, чей-то не финтикультяписто

бросьте сюда файлик с левыми данными
(примерную структуру)
...
Рейтинг: 0 / 0
GetWordNum() и 2 табуляции подряд
    #33535830
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / GetWordNum() и 2 табуляции подряд
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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