Re: ОСТАТОК ОТ ДЕЛЕНИЯ | |
---|---|
Igor Korolyov Автор Сообщений: 34580 Дата регистрации: 28.05.2002 |
Вот честно, ни разу не потребовалось такой функции - проверять что в строке только латиница... А если мне надо латиница и цифры? Латиница, цифры, точка, подчёркивание и вопросительный знак? И ещё 100500 подобных разновидностей - через LEN(CHRTRAN()) это вполне себе просто и универсально решается. Зечем бы мне нужно было 100500 малоочевидных функций, пусть и работающих на 10% эффективнее (т.к. для "проверки" в общем не нужно модифицировать и тем более ресайзить строку, а вариант с CHRTRAN(,,"") очень активно это делает - даже может оказаться выгоднее делать нечто типа CHRTRAN(...,"ABCDEF","000000") == "00000000000" - для избежания ресайза строки). Да, такие проверки это ОЧЕНЬ частный случая того что реализуется при помощи регулярных выражений - жаль что в фоксе это не "встроено", но с другой стороны прилепить активиксовый вариант из VBScript - дело 10-ти секунд И зачем мне тогда геморрой с подключением fll (таскай её с собой, не забудь SET LIBRARY сделать, а если таких подключаемых библиотек куча - поборись ещё с конфликтом имён функций в них). Опять же лично мне такого никогда не нужно было. Возможно потому что я не страдаю написанием "своих парсеров", а беру готовые реализации Да и в дотнете, насколько я знаю, даже STREXTRACT-а то никакого нет - отдают программисту на откуп кодирование такой задачи наиболее оптимальным для его случая способом По реализации - фокс ОЧЕНЬ неоптимален при манипулировании строками. Так что вариант с выкусыванием найденного по определению будет сильно хуже чем БЕЗ такого выкусывания. А сделать его (выкусывание это) при помощи банального STRTRAN - если уж так приспичило - не составляет особого труда. И лично мне вариант с 2-мя вызовами простых функций кажется лучше/логичнее/красивее чем перегружать и так не слишком простую STREXTRACT дополнительными флагами/параметрами. Так и работают в фоксе строковые функции (те что модифицируют строку - за достаточно редким исключением) - постоянно гоняется из одного места памяти в другое содержимое... Потому то они и являются весьма и весьма небыстрыми... При том что помимо самого блока с "байтиками строки" для переменной держится ещё и структура с описанием этой переменной - т.е. "напрямую" фокс с "указателем на байтики строки" не работает - всё опосредованно - для автоматического управления памятью и сборки мусора... ------------------ WBR, Igor |
© 2000-2024 Fox Club  |