:: Visual Foxpro, Foxpro for DOS
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Нет. Alpha в данном коде проверяет ВСЕ символы строки (при том именно вызывая для них isEngChar). isEngChar - только один (первый), "встроенная" IsAlpha() не подходит т.к. русский тоже за язык считает


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Igor Korolyov
Нет. Alpha в данном коде проверяет ВСЕ символы строки (при том именно вызывая для них isEngChar).
И где она ее вызывает?
Igor Korolyov
FUNCTION Alpha(str)
RETURN LEN(CHRTRAN(m.str, C_LATIN_LETTERS, "")) = 0


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
В исходном варианте Alpha вызывает в цикле isEngChar И у них разный "смысл". Одна работает со строкой, вторая с одиночным символом. при отм первая не сможет без второй работать, а вторую никак не "расширить" для обработки множества символов (ну точнее если её "расширить" циклом, она превратится в первую )

У меня, естественно, нет никакой isEngChar т.к. по другому проверяется строка - и да, она может и один символ проверить и много.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
ssa

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Игорь, ну я же написал - при ближайшем рассмотрении. Думаешь, я всего этого не понял?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Проверка корректности счета IBAN
LUCIAN
Автор

Сообщений: 343
Откуда: Лида Беларусь
Дата регистрации: 25.03.2008
Выше указанную функцию проверки корректности счета IBAN поместил в хранимые процедуры базы
в таком виде:
FUNCTION CheckIBAN
LPARAMETERS x
IF EMPTY(X)
RETURN ""
ENDIF
PRIVATE errmsg,x,sCheck,CountryCode
m.errMsg=""
..........
..........
Для поля которое содержит счет IBAN установил правила контроля:
RULE EMPTY(checkiban(scet_n))
MESSAGE checkiban(scet_n)

При проверке чего-то плохого не обнаружил,
Всё ли я предусмотрел?
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Ну кроме того что для "ошибочных" записей функция будет вызываться 2 раза... В принципе так можно делать.
P.S. По русски нехорошо звучит сия аббревиатура


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
BOBAN

Сообщений: 624
Откуда: Солигорск
Дата регистрации: 05.07.2004
st[3] = SUBSTR(m.x,5,4)
.... cut ....
IF m.countryCode=="GB"
IF !ISALPHA(st[3])
m.errMsg =m.errMsg+"Если код страны = GB, символы с 5 по 8 должны быть буквенными A-Z."+CHR(13)
ENDIF
ENDIF

Только первый символ проверяем из четырех. Не соответствует тексту ошибки.
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
akvvohinc

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
Это просто описка - должно быть ALPHA().
ISALPHA(), помимо проверки только первого символа, не подходит и по смыслу требуемой проверки - она не ограничивается диапазоном A-Z.
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Никто еще не предлагал ALPHA(x) в вышеозначенном смысле? "Первым буду, значит" )
LEN(CHRTRAN(UPPER(x),"ABCDE...Z",""))=0
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Нечитатели подтянулись

И про ошибку с IsAlpha() я уже писал, и как раз LEN(CHRTRAN(...=0 предлагал вместо жутких циклов


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
А вот, Игорь, если перебить всех белых написать такую FLL-ку, как .Net, не такую же, но запилить все функции, которые обычно нужны в жизни, и подключать их в проект, и описание к ним сделать, и всем запихать/отрекламировать... СтОит того? Или фоксисты в принципе самостийные разрабы, или язык настолько прост, что нет смысла?
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
99% "функций" дотнета не нужны рядовому разработчику. Я так полагаю что про 50-70% оных "мидл" (младший научный сотрудник - ещё не "старший", но уже и не аспирант/студент) даже и не знает - хотя без проблем сможет закодировать большинство задач/алгоритмов. А про 10% не будет знать даже "сеньор" (старший научный сотрудник). Все же 100% не знает вообще никто, даже разрабы - т.к. они "по частям" пишут это всё
Поэтому совершенно не ясно что именно нужно "запиливать" - и, главное, зачем? Сделать из фокса C# не выйдет в любом случае.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
of63
А вот, Игорь, если перебить всех белых написать такую FLL-ку, как .Net, не такую же, но запилить все функции, которые обычно нужны в жизни, и подключать их в проект, и описание к ним сделать, и всем запихать/отрекламировать... СтОит того? Или фоксисты в принципе самостийные разрабы, или язык настолько прост, что нет смысла?

Вы так всех копипастеров изведете, растерзают.
Но, вообще-то, в vfp9 это проще осуществить в классах, чем в fll.
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> что запиливать? Ту же функцию ALPHA и пр. символьные функции, например... Вот мне показалось удобным STREXTRACT превратить в не просто возвращающей деталь из строки между разделителями, но и одновременно удаляющей из исходной строки возвращаемую часть, (решается передачей исходной строки по ссылке, в таком способе передачи можно что-то менять в исходной строке...), удобно, и еще с 10к другой наберется. Вот библа по строчным функциям. Минус - нет описания, и согласования интерфейса с сообществом програмеров. Да, можно и в исходном виде это предлагать, но, не вижу на форуме, что это кому-то надо, т.е. те "наработки", многолетние, никому не нужны! Это понятно, конечно, молодая кровь, хочет молодого тела ). Но тогда почему МС так смело навязывает свои строчные ф-ии в .Net? Откуда там знают, что надо среднестатистическому юзеру, а мы, ср. юзеры, этого еще не знаем?
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
of63
Вот мне показалось удобным STREXTRACT превратить в не просто возвращающей деталь из строки между разделителями, но и одновременно удаляющей из исходной строки возвращаемую часть
Мне кажется, это баг, который кто-то решил задокументировать как фичу. (;Ж
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Передача переменной по ссылке, типа:
m.x = "123"
? myFUNC(@x)
? m.x && Доб. забыл, для чего этот пример )

FUNC myFUNX(m.par)
m.par = m.par + "1" && модифицируется строка (1С), если она передана как ссылка
RETURN .T.

Это не баг! Это важнейшая штатная деталь фокса, как и в VB - штатные ссылки типа ByRef,ByVal (и как в фоксе макрос, которого мало где встретишь вообще)



Исправлено 2 раз(а). Последнее : of63, 26.06.17 21:45
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
of63
Передача переменной по ссылке, типа:
m.x = 123
? myFUNC(@x)

FUNC myFUNX(m.par)
m.par = m.par + "1" && модифицируется строка (1С), если она передана как ссылка
RETURN .T.

Это не баг! Это важнейшая штатная деталь фокса, как и в VB - штатные ссылки типа ByRef,ByVal (и как в фоксе макрос, которого мало где встретишь вообще)
Я не о том. Возможно модификация области памяти входящей переменной была багом исходного алгоритма. А потом её решили превратить в фичу. Хотя, затраты на перемещение блоков достаточно велики. Возможно, мои домыслы - всего лишь домыслы.
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Тоже не знаю, как они (разрабы фокса) решили увеличение необходимой памяти, после "исправления" строки символов, например, увеличения с 1 до до 100Мбайтов. Интуитивно кажется что все это решаемо на уровне кода Си, но пока не начнешь это реализовывать, не понятно как )

Доб. Ведь есть же функция АПМ типа "вернуть размер памяти для заданного хендла", и есть "увеличить размер памяти", и в крайнем случае "выделить новую память" скопировать новое состояние строки, и вернуть новый хендл, подменить хендл памяти... С вытекающеми последствиями кода после "подмены"



Исправлено 1 раз(а). Последнее : of63, 26.06.17 21:55
Ratings: 0 negative/0 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
of63
Доб. Ведь есть же функция АПМ типа "вернуть размер памяти для заданного хендла", и есть "увеличить размер памяти", и в крайнем случае "выделить новую память" скопировать новое состояние строки, и вернуть новый хендл, подменить хендл памяти... С вытекающеми последствиями кода после "подмены"
Мне кажется, в фоксе почти везде используется тупой HeapAlloc на любую операцию со строками. Максимум HeapRealloc в ряде случаев.
Ratings: 0 negative/1 positive
Re: ОСТАТОК ОТ ДЕЛЕНИЯ
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Даже на:
x = "1"
x="2"
может, это на "совести" разрабов фокса. Но дали ВСЕ разрабу на фоксе, т.е FLLку (ни разу не воспользовался!, вс достаточно терпимо быстро и так)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 39 (Гостей: 39)

© 2000-2024 Fox Club 
Яндекс.Метрика