Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Интересная задача / 14 сообщений из 14, страница 1 из 1
18.06.2009, 18:34
    #36049192
VanDOS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Здравствуйте! Помогите пожалуйста справиться с интересной задачей...
Имеется таблица work.dbf с информацией об организациях, следующего вида:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    Аварийная газовая служба Красноглинского
    района, ОАО Самарагаз
      Сфера деятельности организации:
      Аварийные службы
          8  Марта,  25 
            950 - 33 - 33 
    Аварийно-диспетчерская служба, ОАО Мой город
      Сферы деятельности организации:
      Аварийные службы, Ремонт водопровода,
      Техобслуживание теплоэнергосетей
         Некрасовская,  62 - 89 
            558 - 44 - 32 
            147 - 21 - 55 
            148 - 25 - 68 
    Аварийно-диспетерская служба, МУП
    СамараВодоканал
      Сфера деятельности организации:
      Аварийные службы
         Фрунзе,  84 
            215 - 65 - 78 
            652 - 12 - 45 

На самом деле организаций в таблице намного больше...
Нужно разбить эту информацию на имя организации, сфера деятельности, адреса и телефоны (4 колонки) (см. файл rezultat.dbf).
Как видно, перед названием 4 пробела, перед сферой деятельности 6, перед адресом 9 и перед телефонами 11.
Файлы work.dbf и rezultat.dbf приложены. Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
18.06.2009, 20:08
    #36049336
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT work
GO top
LOCAL lnShort
*  254  длина строки Inf
SCAN 
lnShort =  254 -LTRIM(Inf)
DO CASE
	CASE lnshort= 250  && названием  4  пробела
		APPEND BLANK IN rezultat
		REPLACE name WITH ALLTRIM(inf) IN rezultat 
	CASE lnshort= 248  && перед сферой деятельности  6 
		REPLACE sfera WITH ALLTRIM(inf) IN rezultat 
	CASE lnshort= 245  && перед адресом  9  
		REPLACE adres WITH ALLTRIM(inf) IN rezultat 
	CASE lnshort= 243  && и перед телефонами  11 .
		REPLACE tel WITH IIF(EMPTY(rezultat.tel),ALLTRIM(inf),","+ALLTRIM(inf)) IN rezultat 			
ENDCASE 
ENDSCAN 

А где интерес в этой задаче?
...
Рейтинг: 0 / 0
18.06.2009, 20:28
    #36049364
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Код: 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.
SELECT work
GO top
LOCAL lnShort, lnShortOld
*  254  длина строки Inf
lnShortOld =  0 
SCAN 
lnShort =  254 -LEN(LTRIM(Inf))

DO CASE
	CASE lnshort= 4  && названием  4  пробела
		IF lnShortOld<> 4 
			APPEND BLANK IN rezultat
		ENDIF 
		REPLACE name WITH IIF(EMPTY(rezultat.name),ALLTRIM(work.Inf),ALLTRIM(rezultat.name);
		+" "+ALLTRIM(work.Inf)) IN rezultat
	CASE lnshort= 6  && перед сферой деятельности  6 
		REPLACE sfera WITH IIF(EMPTY(rezultat.sfera),ALLTRIM(work.Inf),ALLTRIM(rezultat.sfera);
		+" "+ALLTRIM(work.Inf)) IN rezultat
	CASE lnshort= 9  && перед адресом  9  
		REPLACE adres WITH IIF(EMPTY(rezultat.adres),ALLTRIM(work.Inf),ALLTRIM(rezultat.adres);
		+","+ALLTRIM(work.Inf)) IN rezultat
	CASE lnshort= 11  && и перед телефонами  11 .
		REPLACE tel WITH IIF(EMPTY(rezultat.tel),ALLTRIM(work.Inf),ALLTRIM(rezultat.tel);
		+","+ALLTRIM(work.Inf)) IN rezultat 			
ENDCASE 
lnShortOld=lnShort
ENDSCAN 
...
Рейтинг: 0 / 0
20.06.2009, 20:45
    #36052344
VanDOS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Dag, спасибо тебе. Очень помог))
А не поможешь по вопросу, немного не относящемуся к теме?
Допустим, то что я сделал, это информация из одного текстового файла 1.txt:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    Аварийная газовая служба Красноглинского
    района, ОАО Самарагаз
      Сфера деятельности организации:
      Аварийные службы
          8  Марта,  25 
            950 - 33 - 33 
    Аварийно-диспетчерская служба, ОАО Мой город
      Сферы деятельности организации:
      Аварийные службы, Ремонт водопровода,
      Техобслуживание теплоэнергосетей
         Некрасовская,  62 - 89 
            558 - 44 - 32 
            147 - 21 - 55 
            148 - 25 - 68 
    Аварийно-диспетерская служба, МУП
    СамараВодоканал
      Сфера деятельности организации:
      Аварийные службы
         Фрунзе,  84 
            215 - 65 - 78 
            652 - 12 - 45 
Имеется еще около 1000 подобных файликов с именами 2.txt, 3.txt, 4.txt и. т.д. (до 500). Как можно объединить информацию из всех этих файлов в один текстовый (чтоб потом все вместе на фоксе обработать)? Может уже есть похожие проги? Или может кто кодом поможет?
...
Рейтинг: 0 / 0
20.06.2009, 20:49
    #36052349
VanDOS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
VanDOS
Имеется еще около 1000 подобных файликов с именами 2.txt, 3.txt, 4.txt и. т.д. (до 500).

Имеется еще около 1000 подобных файликов с именами 2.txt, 3.txt, 4.txt и. т.д. (до 1000).
...
Рейтинг: 0 / 0
21.06.2009, 07:56
    #36052503
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
А зачем их обьединять в один общий? Проще дергать их в FoxPro по одному, скармливая их твоей функции извлечения данных и набивая данными таблицу work.dbf.
...
Рейтинг: 0 / 0
21.06.2009, 09:36
    #36052513
Van_DOS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Я думаю, 1000 файлов проблематично будет дергать по одному...
Можно впринципе в Ворде склеить, вставить всю группу текстовых файлов
...
Рейтинг: 0 / 0
21.06.2009, 09:54
    #36052521
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Van_DOSЯ думаю, 1000 файлов проблематично будет дергать по одному...
Можно впринципе в Ворде склеить, вставить всю группу текстовых файлов
А это не проблематичней, чем один раз запустить prg-шку?
...
Рейтинг: 0 / 0
21.06.2009, 10:08
    #36052526
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Van_DOSМожно впринципе в Ворде склеить, вставить всю группу текстовых файлов

Ворд - это остановка Владивосток при путешествии из Санктъ-Питербурха в Москву.
...
Рейтинг: 0 / 0
21.06.2009, 14:22
    #36052614
Koolkhel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
команда cat :) в powershell есть ;)
...
Рейтинг: 0 / 0
21.06.2009, 15:55
    #36052650
Dag
Dag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
LOCAL lnI, lcDirectory

lcDirectory=GETDIR() && выбрать нужную директорию
FOR lnI= 1  TO  1000 
	YourFunc(lcDirectory+ALLTRIM(STR(lnI)+".txt"))
endfor

FUNCTION YourFunc(tcFile)
* обработай здесь свой .txt файл от  1 .txt до  1000 .txt
ENDFUNC 
...
Рейтинг: 0 / 0
22.06.2009, 08:30
    #36053023
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Если надо все TXT в заданной папке перебрать то можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL lnI, lcDirectory
LOCAL ARRAY laF[ 2 ]

lcDirectory=addbs(GETDIR()) && выбрать нужную директорию
FOR lnI= 1  TO adir(lcDirectory + '*.txt')
	YourFunc(lcDirectory+laF[lnI,  1 ]))
endfor
...
Рейтинг: 0 / 0
22.06.2009, 08:32
    #36053026
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Маленько не дописал. Так правильно
Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL lnI, lcDirectory
LOCAL ARRAY laF[ 2 ]

lcDirectory=addbs(GETDIR()) && выбрать нужную директорию
FOR lnI= 1  TO adir(laF, lcDirectory + '*.txt')
	YourFunc(lcDirectory+laF[lnI,  1 ]))
endfor
...
Рейтинг: 0 / 0
25.06.2009, 11:01
    #36059098
Barklay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересная задача
Вы задали этот вопрос сразу на нескольких тематических форумах на этом сайте! Что так припекло?
На форуме Delphi я привел вам готовое решение в виде консольного приложения (с исходником).
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Интересная задача / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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