powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Интересная задача
14 сообщений из 14, страница 1 из 1
Интересная задача
    #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
Интересная задача
    #36049336
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
Интересная задача
    #36049364
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
Интересная задача
    #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
Интересная задача
    #36052349
VanDOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanDOS
Имеется еще около 1000 подобных файликов с именами 2.txt, 3.txt, 4.txt и. т.д. (до 500).

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

Ворд - это остановка Владивосток при путешествии из Санктъ-Питербурха в Москву.
...
Рейтинг: 0 / 0
Интересная задача
    #36052614
Koolkhel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
команда cat :) в powershell есть ;)
...
Рейтинг: 0 / 0
Интересная задача
    #36052650
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
Интересная задача
    #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
Интересная задача
    #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
Интересная задача
    #36059098
Barklay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы задали этот вопрос сразу на нескольких тематических форумах на этом сайте! Что так припекло?
На форуме Delphi я привел вам готовое решение в виде консольного приложения (с исходником).
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Интересная задача
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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