powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите с поиском с заменой
3 сообщений из 28, страница 2 из 2
помогите с поиском с заменой
    #37440104
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSn888AndreTM,

можно :);)
если обрезается последнее в выражени по типу str1+rtrim(str2) и индекс с условием.. поверьте - пару раз такой изврат спасал при обработке больших массивов
но, полагаю - тут уж это слишком большой отход от темы :)
Это Вам только кажется. Дело в том, что FoxPro в принципе не поддерживает индексы с переменным значением длины ключа. Он сам, автоматически, дополняет значение ключа до некоторой фиксированной величины пробелами. А вот до какой именно величины, заранее сказать сложно.

Другими словами, Ваше выражение str1+rtrim(str2) фактически, было преобразовано в выражение PADR(str1+rtrim(str2), XX). Где XX - это как раз некое фиксированное значение, которое FoxPro вычислил сам, по собственному "разумению". Т.е. хотя Вы и отрезали концевые пробелы, но FoxPro их снова добавил. Вы сделали бессмысленную операцию.

Если уж Вы хотите избавится от возможных ведущих пробелов, то после этого надо самостоятельно дополнить строку до некоторой фиксированной величины концевыми пробелами. Например

Код: plaintext
PADR(LTrim(str1), 10 ) + PADR(LTrim(str2), 10 )

Длина ключа в индексном выражении при любых значениях должна быть одинакова. Если Вы не сделаете этого сами, то FoxPro примет решение за Вас. И не факт, что это Вам понравится.
...
Рейтинг: 0 / 0
помогите с поиском с заменой
    #37440166
SSn888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot ВладимирМ]SSn888Другими словами, Ваше выражение str1+rtrim(str2) фактически, было преобразовано в выражение PADR(str1+rtrim(str2), XX). Где XX - это как раз некое фиксированное значение, которое FoxPro вычислил сам, по собственному "разумению". Т.е. хотя Вы и отрезали концевые пробелы, но FoxPro их снова добавил. Вы сделали бессмысленную операцию.

ну, разумение у него простое - он банально ставит число, которое мы бы получили при помощи select(max(len(rtrim())) ;):)

ВладимирМДлина ключа в индексном выражении при любых значениях должна быть одинакова. Если Вы не сделаете этого сами, то FoxPro примет решение за Вас. И не факт, что это Вам понравится.
:) спасибо, помню

не воспринимайте так буквально тот пример что я привел, естественно - в реальности строка была подлинней и содержала не только тримы, но и ПАДЛы (специфика такая была :) ), и другую нечисть... да и сам индекс был с условием

просто указал, что ТРИМы имеют право на жизнь в индексе ;)
...
Рейтинг: 0 / 0
помогите с поиском с заменой
    #37441065
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSn888,

Естественно, имеют "право на жизнь" _любые индексные выражения_.
Но не в эпоху FPD и FPw3.
И они нужны сейчас только нам*)

А так:
Если нужен Рашмор - будьте добры использовать требования FPD/VFP.
Если пишете Приложение - будьте добры изучить оптимизацию запросов хотя бы к собственным базам/таблицам.
Если пишете Клиента - будьте добры изучить connection strings с точки зрения сервера, а также сами запросы к серверу....

*) разработчикам на vfp.
...
Рейтинг: 0 / 0
3 сообщений из 28, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / помогите с поиском с заменой
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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