Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как у строки убрать пробелы в конце ? / 25 сообщений из 52, страница 1 из 3
01.09.2005, 16:43
    #33246686
kvasov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Как у строки убрать пробелы в конце ?

1. Есть ли такая функция у COS ?

2. В программе на COS можно ли эту задачу выполнить функциями басика?

Dim MyVar
MyVar = LTrim(" Caché ") 'MyVar contains "Caché ".
MyVar = RTrim(" Caché ") 'MyVar contains " Caché".
MyVar = Trim(" Caché ") 'MyVar contains "Caché".
...
Рейтинг: 0 / 0
01.09.2005, 17:01
    #33246759
LittleCat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Смотри описание функции $ZSTRIP
...
Рейтинг: 0 / 0
02.09.2005, 08:45
    #33247421
MX - ALEX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
LittleCatСмотри описание функции $ZSTRIP
s t=$p(t_" "," ")
если пробелов внутри t не много
...
Рейтинг: 0 / 0
19.10.2005, 12:43
    #33332793
-Serg-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
RT(S) F Q:$E(S,$L(S))'=" " S S=$E(S,0,$L(S)-1)
Q S
...
Рейтинг: 0 / 0
21.02.2006, 10:31
    #33557576
Sergo Gromov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
BEZsimv(P,Str); Р - строка, Str - удаляемый символ
N (P,Str) S P1=P,P="",L=0
F N=1:1:$L(P1,Str) I $P(P1,Str,N)'="" D
.S L=L+1,$P(P,Str,L)=$P(P1,Str,N)
Q P

Удаляёт символ, заданый в переменной Str, лидирующий, в конце, дубликаты ... особенно часто пользую для пробела
...
Рейтинг: 0 / 0
21.02.2006, 16:50
    #33558937
MX -- ALEX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Sergo GromovBEZsimv(P,Str); Р - строка, Str - удаляемый символ
N (P,Str) S P1=P,P="",L=0
F N=1:1:$L(P1,Str) I $P(P1,Str,N)'="" D
.S L=L+1,$P(P,Str,L)=$P(P1,Str,N)
Q P

Удаляёт символ, заданый в переменной Str, лидирующий, в конце, дубликаты ... особенно часто пользую для пробела
Сергей вопрос не по теме -
команда

N (P,Str)

не напрягает ли слишком процесс на M
ввиду того что ВСЕ лок перемен система как то скрывает.
а это много и долго ?
...
Рейтинг: 0 / 0
22.02.2006, 03:25
    #33559660
AlexanderYe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
у меня вот так получилось..
NoSP(str)
s dlina=$l(str)
f i=$l(str," "):-1 d q:$l($p(str," ",i))>0
.s:$l($p(str," ",i))=0 dlina=dlina-1
s newstr=$e(str,1,dlina)
q newstr
...
Рейтинг: 0 / 0
24.02.2006, 11:02
    #33563464
Sergo Gromov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
MX -- ALEX.... вопрос не по теме -
команда

N (P,Str)

не напрягает ли слишком процесс на M
ввиду того что ВСЕ лок перемен система как то скрывает.
а это много и долго ?

Прошу прощения, я немного не понял вопроса :(
...
Рейтинг: 0 / 0
24.02.2006, 11:10
    #33563482
MX -- ALEX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Sergo Gromov MX -- ALEX.... вопрос не по теме -
команда

N (P,Str)

не напрягает ли слишком процесс на M
ввиду того что ВСЕ лок перемен система как то скрывает.
а это много и долго ?

Прошу прощения, я немного не понял вопроса :(
в том смысле что команда NEW (P,Str)
должна как то скрыть присутствие ВСЕХ
локальных переменных - например их 2000 в этот момент

а это возможно цикл на 2000 ?
и время потраченое
=========
...
Рейтинг: 0 / 0
24.02.2006, 11:13
    #33563488
Sergo Gromov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Трудно говорить про вещи, не являясь разработчиком самого СУБД ......

Но насколько я понимаю - имеется некая область памяти, занятая лок.переменными. Команда NEW создаёт новую область для переменных, а при выходе из программы - удаляет новую область и устанавливает указатель на старую. Такой принцип работы наиболее логичный - переборка кому нужна ?
...
Рейтинг: 0 / 0
24.02.2006, 11:19
    #33563498
Sergo Gromov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Если подсмотреть системные программы, то там делается вплоть до наоботот - объявляется обновление только тех переменных, которые будут использоваться программой. Что лучше/быстрее - сказать трудно. Но то что большинство утилит портируется ещё из позаверашних версий и по исполнению далеко от совершенства - так может и NEW там нелогично юзается :)

Я в своих программах имею десяток переменных, что одинаковы во всех моих задачах - как то код раб.места, код пользователя, тек.дата ... ньюкаются переменные все кроме этих, а остальных - не много.

Да и оперативки под М надо много для ньюканья 2000 переменных
...
Рейтинг: 0 / 0
24.02.2006, 11:37
    #33563524
MX -- ALEX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Sergo GromovТрудно говорить про вещи, не являясь разработчиком самого СУБД ......

Но насколько я понимаю - имеется некая область памяти, занятая лок.переменными. Команда NEW создаёт новую область для переменных, а при выходе из программы - удаляет новую область и устанавливает указатель на старую. Такой принцип работы наиболее логичный - переборка кому нужна ?
дзякую
потестить что ли ..
по уму как вроде не должно подсаживать
в msm ум был
хотя..
...
Рейтинг: 0 / 0
25.02.2006, 18:01
    #33564752
AlexanderYe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
New создает копии локальных переменных, исходные переменные заносятся в стек.После quit значение переменной считывается из стека.
Жрет ресурсы использовать нежелательно.
...
Рейтинг: 0 / 0
26.02.2006, 15:45
    #33565941
AlexanderYe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
команда NEW (P,Str)
должна как то скрыть присутствие ВСЕХ
локальных переменных - например их 2000 в этот момент

а это возможно цикл на 2000 ?
и время потраченое
=========

почему же всех ? ничего она не скрывает, о только создает новые копии P и Str...
NEW (P,Str) в этот момент вам доступны 1998 ваших локальных переменных+2 копии переменных P и Str, а после QUIT вам доступны становяться и изначальные переменные P Str их значение и потомки...
...
Рейтинг: 0 / 0
26.02.2006, 16:57
    #33566078
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
AlexanderYe
команда NEW (P,Str)
должна как то скрыть присутствие ВСЕХ
локальных переменных - например их 2000 в этот момент

а это возможно цикл на 2000 ?
и время потраченое
=========

почему же всех ? ничего она не скрывает, о только создает новые копии P и Str...
NEW (P,Str) в этот момент вам доступны 1998 ваших локальных переменных+2 копии переменных P и Str, а после QUIT вам доступны становяться и изначальные переменные P Str их значение и потомки...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
USER>s a= 1 ,b= 2 
 
USER>n (b)
 
USER 1S1>w a
 
W a
^
<UNDEFINED>
USER 1S1>
Это из cache. Про который мампс Вы писали?
...
Рейтинг: 0 / 0
27.02.2006, 03:20
    #33566603
AlexanderYe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Прошу прощения. Перепутал выборочный NEW с исключающим-(
...
Рейтинг: 0 / 0
25.03.2006, 14:01
    #33625123
токарь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Брацы ! Подкинул в одном топике функцию от Sergo спецам РСУБД-шникам, которыя сказки сказывали, шо пишут приложения на чистом sql. И вот шо получилася. Вчетвером лучшия представители сварганили на чистом sql вот енто:

CREATE FUNCTION aaa( @fld VARCHAR(1000) ) RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @t VARCHAR(1000)
WHILE (1=1)
BEGIN
SET @t = REPLACE(@fld, ' ', ' ')
IF @t = @fld
BREAK
SET @fld = @t
END
RETURN LTRIM( RTRIM(@fld) )
END

Из чего можно заключить шо:
1) sql - процедурный язык;
2) на котором программы усегда в два раза длиннее чем на mumps;
3) функционал кода Sergo усе равно непосилен - низя удалить любой символ.

Но ихний предводитель поднатужился и ужо не на чистом а на кристальначистом выдал вот такую абрукадабру:

DECLARE @fld VARCHAR(1000)
SET @fld = ' sdfbsdbvds d dfgb dfgdfb fdgdfgn fgdfgndfn '
SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(@fld)), ' ', ' '+char(1)), char(1)+' ',''),char(1),'')

Из чего можно заключить шо:
1) на кристальначистом низя повторно использовать код, а усе время нада его повторять;
2) ни на чистом, ни на кристальначистом функционал кода Sergo сделать окончательно низя.
И призадумалось мне. Это шо же РСУБД совсем не конкурентноспособны, ежели по каждому такому пустяку такая бяда ? И шо с ними делать, ежели они со своими тухлыми продухтами лезут во все щели, як тараканы, и вешают лапшу на неокрепшие уши клиентов, не ведающих как дила абстаят на самом деле. Или тока на sql.ru такие спецы по sql, а в жизни усе сложнее, и на РСУБД можо хоть чаво-нибудь сделать окромя запросов к одной аграмадной таблице ? Шо думать ?
...
Рейтинг: 0 / 0
27.03.2006, 10:53
    #33626506
Sergo Gromov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Вот немного я не понял, то-ли слэнга предыдущего выступающего, то-ли его высказываний ..... предложенный мною код чем хуже/лучше решенного на SQL ?
...
Рейтинг: 0 / 0
27.03.2006, 12:02
    #33626747
MX -- ALEX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Sergo GromovВот немного я не понял, то-ли слэнга предыдущего выступающего, то-ли его высказываний ..... предложенный мною код чем хуже/лучше решенного на SQL ?
Код красивый.
Но тема более широкая.
Видимо вопрос в том что сравнивать SQL и M - непродуктивно.
М включает в себя достаточно развитые средства для работы
со строками
чистый SQL в этих ситуациях требует большего напряга от программиста.
в М также легче например создать хранимую процедуру
для последующего многократного использования.

M может все и даже больше - но первоначальное
изучение затруднено отсутствием русскоязычной доки
и ценами на лицензии.

SQL - хорош на стандартно-типовых запросах к большим базам,
удобен тем что везде изучается и много литературы,
есть бесплатные реализации, много людей на нем работают,
не требует переделки запроса в случае изменения структуры
базы данных (на М это не всегда возможно - зависит от
применяемого дополнительго инструментария)
сам язык построен на основе знакомых английских слов -
что особенно нравится начинающим программистам и студентам.

но чистый SQL затруднительно применять для сложных ситуаций -
например для построения бизнес-логики налогообложения,
для валютно-финансовых расчетов при колебаниях курсов.
Там код становится далеко не таким красивым и удобочитаемым
как хотелось бы.
...
Рейтинг: 0 / 0
27.03.2006, 15:46
    #33627515
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
На Cache Basic работает отлично, а главное минимальный код !!!


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
'Test Cache Basic
Dim i as Integer
PrintLn LTrim(" Cache ") 'String contains "Cache ".
PrintLn RTrim(" Cache ") 'String contains " Cache".
PrintLn Trim(" Cache ") 'String contains "Cache".
For i= 1  to  3 
PrintLn LTrim(" Stroca ") & i
PrintLn RTrim(" Stroca ") & i
PrintLn Trim(" Stroca ") & i
Next i

1. Удаляет пробелы в начале строки
2. в конце
3. в начале и конце
...
Рейтинг: 0 / 0
27.03.2006, 20:27
    #33628239
пекарь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Русифицировал для Sergo Gromov текст токаря. Вроде бы понятно, что на SQL эквивалента просто нет. И сказать лучше/хуже, соответственно, не представляется возможным.

"Предложил в одном топике функцию от Sergo Gromov специалистам по SQL и РСУБД, в связи с их утверждениями, что они пишут приложения баз данных на чистом SQL. В результате получился такой вариант кода на чистом (?) SQL:

CREATE FUNCTION aaa( @fld VARCHAR(1000) ) RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @t VARCHAR(1000)
WHILE (1=1)
BEGIN
SET @t = REPLACE(@fld, ' ', ' ')
IF @t = @fld
BREAK
SET @fld = @t
END
RETURN LTRIM( RTRIM(@fld) )
END

Из чего можно заключить, что:
1) SQL - процедурный (а не декларативный) язык;
2) на котором программы (в части обработки данных - о чтении из БД отдельный разговор) в два раза длиннее чем на MUMPS;
3) и функционал кода Sergo Gromov не реализован - нельзя удалить ЛЮБОЙ символ.

Есть и второй вариант, как бы на "более чистом" (?) SQL, автор которого оригинально использовал вложенную REPLACE с предварительной вставкой служебного символа после "срединных" пробелов:

DECLARE @fld VARCHAR(1000)
SET @fld = ' sdfbsdbvds d dfgb dfgdfb fdgdfgn fgdfgndfn '
SELECT REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(@fld)), ' ', ' '+char(1)), char(1)+' ',''),char(1),'')

И этот вариант не доделан, и получается, что:
1) нельзя повторно использовать код (не оформлена процедура/функция);
2) и снова функционал кода Sergo Gromov не реализован ! (как, кстати, и у Valeriu на Cache Basic - так что заманчивые RTRIM/LTRIM не проходят в обоих случаях).

Складывается впечатление, что это определенная тенденция, то есть на самом деле приложения в РСУБД пишутся на нескольких языках, что вообще говоря плохо, и может быть, понимая это, специалисты по SQL и РСУБД "слегка преувеличивают" (но, надо заметить, систематически).
...
Рейтинг: 0 / 0
27.03.2006, 20:43
    #33628251
лекарь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
пекарь...вариант кода на чистом (?) SQL :

CREATE FUNCTION aaa( @fld VARCHAR(1000) ) RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @t VARCHAR(1000)
WHILE (1=1)
BEGIN
SET @t = REPLACE(@fld, ' ', ' ')
IF @t = @fld
BREAK
SET @fld = @t
END
RETURN LTRIM( RTRIM(@fld) )
END

Из чего можно заключить, что:
1) SQL - процедурный (а не декларативный) язык;
1) А с какого перепугу Вы решили, что приведенный код на "чистом SQL"? Лично я наблюдаю Transact-SQL ( процедурное расширение SQL)...
пекарьСкладывается впечатление, что это определенная тенденция, то есть на самом деле приложения в РСУБД пишутся на нескольких языках, что вообще говоря плохо ...
2) А ПОЧЕМУ это плохо?
3) В том же топике, где опубликованы данные скрипты Вам уже заметили, что задача по удалению пробелов для сервера БД выглядит несколько странно (мягко говоря...) А Вы видеосигнал при помощи М не пытались оцифровывать?
...
Рейтинг: 0 / 0
27.03.2006, 21:14
    #33628287
пекарь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Лично мне в "том топике" никто ничего не заметил. То, что Вы говорите, только подтверждает легкое, но систематическое, преувеличение.
И зачем же нервная "оцифровка видеосигнала", когда речь идет о простейшей обработки строк для помещения в БД ? По всему видно, что Вы не можете написать код на чистом SQL (и даже на "процедурном SQL"). Остается только надеяться, что в будущем Вы и Ваши коллеги не будут "слегка преувеличивать".
И как-то слегка неприлично (или самонадеянно ?) звучит опровержение мысли ведущих специалистов БД об очевидной пользе интегрированного языка. Ведь Вы вынуждены программировать на нескольких языках, так как в Вашем распоряжении нет интегрированного языка. То есть пока продолжаете слегка преувеличивать.
...
Рейтинг: 0 / 0
27.03.2006, 21:18
    #33628290
токарь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
Шол бы ты, лекарь, лечить своих бедолаг в своих топиках. Или пиши код на чистом или кристальначистом, или иди в свой топик.
...
Рейтинг: 0 / 0
27.03.2006, 21:21
    #33628293
лекарь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как у строки убрать пробелы в конце ?
1) В каком месте чего я "преувеличил"?
2) Зачем убирать пробелы в строке ХРАНЯЩЕЙСЯ В БАЗЕ ДАННЫХ?
3) Почему программировать на двух языках плохо ?
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как у строки убрать пробелы в конце ? / 25 сообщений из 52, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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