powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как считает слова GetWordNum
19 сообщений из 19, страница 1 из 1
Как считает слова GetWordNum
    #34901869
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу помощи.
Есть две строки
|||240||30030|140||
|||241|60000|70000|240||

Функция GetWordCount для них возвращает разное количество слов, хотя я наивный считал сто их
одинаково должно быть
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34901878
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.... ведь число разделителей равно.
GetWordCount(...., "|")
Соответственно после такого у меня проблема с применением GetWordNum....
Как можно обойти? Пока ищу, может кто подскажет
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34901914
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй OCCURS("|", ...)
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34901927
GetWordCount() считает непустые слова.
Если нужно количество разделителей, то лучше использовать Occurs().
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34901944
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, но мне надо считать 5, 6 слово, а оно может плавать по номеру. Может заменой "||" на "|-|" можно разрулить... Только я не увидел пока в фоксе что-то типа replace(cString, cStrToReplace, cReplaceStr)...
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34901973
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
? STRTRAN('|||240||30030|140||','|','|-')
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34901974
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avdjДа, но мне надо считать 5, 6 слово, а оно может плавать по номеру. Может заменой "||" на "|-|" можно разрулить... Только я не увидел пока в фоксе что-то типа replace(cString, cStrToReplace, cReplaceStr)...

strtran('....', '||', '|-|')

Я самодельной функцией для таких целей пользуюсь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
* Выборка подстроки из строки с разделителями
* Параметры: Строка, Разделитель, Номер элемента
func GetParam
lpara lcText, lcDelim, lnNom
local lnPos, lcT
if lnNom <  1 
	lcT = ''
else
	if lnNom =  1 
		lcT = lcText
	else
		lnPos = at(lcDelim, lcText, lnNom- 1 )
		if lnPos #  0 
			lcT = substr(lcText, lnPos + len(lcDelim))
		else
			lcT = ''
		endif
	endif
	if at(lcDelim, lcT) #  0  
		lcT = left(lcT, at(lcDelim, lcT) -  1 )
	endif
endif
return lcT
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34901994
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
?GetWordCount(strt('|||240||30030|140||','|','| '),'|')
?GetWordCount(strt('|||241|60000|70000|240||','|','| '),'|')
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902074
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если у Вас 9-я версия фокспро, то используйте альтернативный и родной способ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
local lcString, laArrStr[ 1 ], lnCnt 
text to lcString noshow pretext  15 
	||| 240 || 30030 | 140 ||
endtext 
for lnCnt= 1  to alines(laArrStr, lcString,  2 , "|")
	? laArrStr(lnCnt)
endfor
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902095
avdj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T avdjДа, но мне надо считать 5, 6 слово, а оно может плавать по номеру. Может заменой "||" на "|-|" можно разрулить... Только я не увидел пока в фоксе что-то типа replace(cString, cStrToReplace, cReplaceStr)...

strtran('....', '||', '|-|')

Я самодельной функцией для таких целей пользуюсь:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
* Выборка подстроки из строки с разделителями
* Параметры: Строка, Разделитель, Номер элемента
func GetParam
lpara lcText, lcDelim, lnNom
local lnPos, lcT
if lnNom <  1 
	lcT = ''
else
	if lnNom =  1 
		lcT = lcText
	else
		lnPos = at(lcDelim, lcText, lnNom- 1 )
		if lnPos #  0 
			lcT = substr(lcText, lnPos + len(lcDelim))
		else
			lcT = ''
		endif
	endif
	if at(lcDelim, lcT) #  0  
		lcT = left(lcT, at(lcDelim, lcT) -  1 )
	endif
endif
return lcT


То что надо!!!! Спасибо. Вопрос решен!
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902135
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 avdj


если у Вас 9-ка - обратите внимание на мой топик - и не шаманьте на пустом месте
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902230
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо2 avdj
если у Вас 9-ка - обратите внимание на мой топик - и не шаманьте на пустом месте
VFP7 тож рулит с ALINES()
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902352
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AleksMed

ну Вы попробуйте с параметрами, как я показал
и с несколькими разделителями и хелпы сравните ...

рулит, да несколько не так как нужно ...

на 7-ке повтори
Код: plaintext
1.
lnElements = alines(lArr,lcStr, 8 ,',','[',']')
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902368
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
порули до 9-ки
Код: 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.
73.
74.
75.
local lcStr
text to lcStr noshow
[ 2 , 1 ,'№ п/п', 2 , 1 , 1 , 1 ,'xl40','']
[ 2 , 1 ,'Номер счета', 2 , 1 , 1 , 2 ,'xl40','']
[ 2 , 1 ,'Остаток на начало года', 1 , 2 , 1 , 3 ,'xl40','']
[ 2 , 1 ,'>>"Остаток на начало " & ЕСЛИ(И(МЕСЯЦ(dDate_1)=МЕСЯЦ(dDate_2); МЕСЯЦ(dDate_1-1)<>МЕСЯЦ(dDate_1); МЕСЯЦ(dDate_2+1)<>МЕСЯЦ(dDate_2)); МЕСЯЦПРОП(dDate_2; ИСТИНА) & " " & ТЕКСТ(ГОД(dDate_1);"0"); ДАТАПРОП'+'(dDate_1;4)) & "г."', 1 , 2 , 1 , 5 ,'xl40','']
[ 2 , 1 ,'>>"Оборот за " & ЕСЛИ(И(МЕСЯЦ(dDate_1)=МЕСЯЦ(dDate_2); МЕСЯЦ(dDate_1-1)<>МЕСЯЦ(dDate_1); МЕСЯЦ(dDate_2+1)<>МЕСЯЦ(dDate_2)); МЕСЯЦПРОП(dDate_2; ЛОЖЬ) & " " & ТЕКСТ(ГОД(dDate_1);"0"); "период с " & ДАТА'+'ПРОП(dDate_1;4) & "г. по " & ДАТАПРОП(dDate_2;4)) & "г."', 1 , 2 , 1 , 7 ,'xl40','']
[ 2 , 1 ,'Оборот с начала года', 1 , 2 , 1 , 9 ,'xl40','']
[ 2 , 1 ,'>>"Остаток на конец " & ЕСЛИ(И(МЕСЯЦ(dDate_1)=МЕСЯЦ(dDate_2); МЕСЯЦ(dDate_1-1)<>МЕСЯЦ(dDate_1); МЕСЯЦ(dDate_2+1)<>МЕСЯЦ(dDate_2)); МЕСЯЦПРОП(dDate_2; ИСТИНА) & " " & ТЕКСТ(ГОД(dDate_1);"0"); ДАТАПРОП('+'dDate_2;4)) & "г."', 1 , 2 , 1 , 11 ,'xl40','']
[ 2 , 1 ,'Номер журнала операций', 2 , 1 , 1 , 13 ,'xl40','']
[ 2 , 1 ,'по дебету', 1 , 1 , 2 , 3 ,'xl40','']
[ 2 , 1 ,'по кредиту', 1 , 1 , 2 , 4 ,'xl40','']
[ 2 , 1 ,'по дебету', 1 , 1 , 2 , 5 ,'xl40','']
[ 2 , 1 ,'по кредиту', 1 , 1 , 2 , 6 ,'xl40','']
[ 2 , 1 ,'по дебету', 1 , 1 , 2 , 7 ,'xl40','']
[ 2 , 1 ,'по кредиту', 1 , 1 , 2 , 8 ,'xl40','']
[ 2 , 1 ,'по дебету', 1 , 1 , 2 , 9 ,'xl40','']
[ 2 , 1 ,'по кредиту', 1 , 1 , 2 , 10 ,'xl40','']
[ 2 , 1 ,'по дебету', 1 , 1 , 2 , 11 ,'xl40','']
[ 2 , 1 ,'по кредиту', 1 , 1 , 2 , 12 ,'xl40','']
[ 2 , 1 ,'1', 1 , 1 , 3 , 1 ,'xl40','']
[ 2 , 1 ,'2', 1 , 1 , 3 , 2 ,'xl40','']
[ 2 , 1 ,'3', 1 , 1 , 3 , 3 ,'xl40','']
[ 2 , 1 ,'4', 1 , 1 , 3 , 4 ,'xl40','']
[ 2 , 1 ,'5', 1 , 1 , 3 , 5 ,'xl40','']
[ 2 , 1 ,'6', 1 , 1 , 3 , 6 ,'xl40','']
[ 2 , 1 ,'7', 1 , 1 , 3 , 7 ,'xl40','']
[ 2 , 1 ,'8', 1 , 1 , 3 , 8 ,'xl40','']
[ 2 , 1 ,'9', 1 , 1 , 3 , 9 ,'xl40','']
[ 2 , 1 ,'10', 1 , 1 , 3 , 10 ,'xl40','']
[ 2 , 1 ,'11', 1 , 1 , 3 , 11 ,'xl40','']
[ 2 , 1 ,'12', 1 , 1 , 3 , 12 ,'xl40','']
[ 2 , 1 ,'13', 1 , 1 , 3 , 13 ,'xl40','']
[ 2 , 2 ,'Итого', 1 , 2 , 1 , 1 ,'xl54','']
[ 2 , 2 ,'>>СУММСАЛЬДО(<csubsh6>; <s_3>; <s_4>; 1)', 1 , 1 , 1 , 3 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММСАЛЬДО(<csubsh6>; <s_3>; <s_4>; 2)', 1 , 1 , 1 , 4 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММСАЛЬДО(<csubsh6>; <s_5>; <s_6>; 1)', 1 , 1 , 1 , 5 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММСАЛЬДО(<csubsh6>; <s_5>; <s_6>; 2)', 1 , 1 , 1 , 6 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММ(<s_7>)', 1 , 1 , 1 , 7 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММ(<s_8>)', 1 , 1 , 1 , 8 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММ(<s_9>)', 1 , 1 , 1 , 9 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММ(<s_10>)', 1 , 1 , 1 , 10 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММСАЛЬДО(<csubsh6>; <s_11>; <s_12>; 1)', 1 , 1 , 1 , 11 ,'xl55','#,##0.00']
[ 2 , 2 ,'>>СУММСАЛЬДО(<csubsh6>; <s_11>; <s_12>; 2)', 1 , 1 , 1 , 12 ,'xl55','#,##0.00']
[ 2 , 2 ,'', 1 , 1 , 1 , 13 ,'xl56','#,##0.00']
[ 2 , 2 ,'', 1 , 1 , 2 , 1 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 2 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 3 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 4 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 5 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 6 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 7 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 8 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 9 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 10 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 11 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 12 ,'xl36','']
[ 2 , 2 ,'', 1 , 1 , 2 , 13 ,'xl36','']
[ 2 , 2 ,'>>>Footer', 1 , 13 , 3 , 1 ,'xl32','']
endtext


local lArr( 1 ),lnrow, lcOld
lnRow =  0 
lnElements = alines(lArr,lcStr, 8 ,',','[',']')
for i= 1  to lnElements
    if empty(lcOld) and !empty(lArr(i))
	    lnRow=lnRow+ 1 
    	? 'строка' + str(lnRow)
    endif
    if !empty(lArr(i))
    	? lArr(i)
    endif
    lcOld = lArr(i)
endfor
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902519
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимо2 AleksMed

ну Вы попробуйте с параметрами, как я показал
и с несколькими разделителями и хелпы сравните ...

рулит, да несколько не так как нужно ...

на 7-ке повтори
Код: plaintext
1.
lnElements = alines(lArr,lcStr, 8 ,',','[',']')

Сань, по тестам на предоставленных строках, возвращает по 8 слов.
Повторить lnElements = alines(lArr,lcStr,8,',','[',']') на 7-ке нельзя, там другое число параметров.
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902560
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортам другое число параметров

автор
Новый синтаксис функции ALINES( ) расширяет возможности выборки и обработки больших символных массивов, например анализ чувствительности к Регистру данных (case-insensitive), или обработка пустых элементов массива. Данные дополнительные возможности обеспечиваются новым параметром функции nFlags, который заменяет третий параметр lTrim. См. дополнительно раздел ALINES( ), Функция


в 9-й версии функция alines расширена, программисты получили возможность
быстро и просто обрабатывать большие объемы инф-и

вот поэтому я и толковал про 9-ку
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902588
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСань, по тестам на предоставленных строках, возвращает по 8 слов

не пугай,
а то мне голову оторвут ...

все там правильно обраб-ся
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902595
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMed прошелмимона 7-ке повтори
Код: plaintext
1.
lnElements = alines(lArr,lcStr, 8 ,',','[',']')

Сань, по тестам на предоставленных строках, возвращает по 8 слов.
Повторить lnElements = alines(lArr,lcStr,8,',','[',']') на 7-ке нельзя, там другое число параметров.
Как раз в 7 уже можно.

Отличия от 9 только в значении 3 параметра. В 7 он принимает значение только .T./.F. и эквивалентен значению 1 или 0 в 9. Т.е. контролирует факт отсечения ведущих и концевых пробелов в "словах". А количество "границ" также может быть произвольным.

Т.е. достаточно просто число 8 заменить на .F. и будет то же самое, поскольку чуствительность к регистру для скобок и запятой роли не играет.
...
Рейтинг: 0 / 0
Как считает слова GetWordNum
    #34902631
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 alex11100 & ВМ

Ваша правда. :)
Это я не внимательно хелп зачитал.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как считает слова GetWordNum
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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