powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как изменить тип элементов массива
11 сообщений из 11, страница 1 из 1
Как изменить тип элементов массива
    #35442307
ZILIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть массив из элементов типа numeric (1000,00,1110,00 и т.д.). Как мне изменить тип элементов массива и сделать их character ('1000','1100','1110' и т.д. )
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35442318
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
for i =  1  to alen(MyArray)
   MyArray[i] = alltrim(str(MyArray[i]))
endfor
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35443522
Galyamov Rinat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо alltrim(str(MyArray )) предпочитаю использовать
transform(MyArray)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35443692
изв., но оч.глаз режет

авторalltrim(str(MyArray ))

недавно был топик про "индусов"

справа пробелов после стр нет,
поэтому пишем всегда

Код: plaintext
ltrim(str(MyArray[i]))

давайте фокспро любить и уважать
и не будем так писать и показывать новичкам
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35443781
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12345вышелзайчикпогулятьизв., но оч.глаз режет

авторalltrim(str(MyArray ))

недавно был топик про "индусов"

справа пробелов после стр нет,
поэтому пишем всегда

Код: plaintext
ltrim(str(MyArray[i]))

давайте фокспро любить и уважать
и не будем так писать и показывать новичкам

Несогласен, стараюсь придерживаться кода, в котором явно видно что он делает, без оглядки на умолчания, пусть даже такие очевидные как отсутствие пробелов справа в STR(). Поэтому всегда использую ALLTRIM когда хочу результат без пробелов по краям. Чтобы потом видя ее в коде мне не надо было задумываться что там внутри в скобках написано.
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35443845
Dima TНесогласен, стараюсь придерживаться кода, в котором явно видно что он делает, без оглядки на умолчания, пусть даже такие очевидные как отсутствие пробелов справа в STR(). Поэтому всегда использую ALLTRIM когда хочу результат без пробелов по краям. Чтобы потом видя ее в коде мне не надо было задумываться что там внутри в скобках написано.
Интересная логика. То есть на первое место поставлена какие-то собственные предрассудки или простое незнание, ибо сочетание ltrim(str()) у большинства людей запоминается за один раз и больше не требует каких-либо мысленных усилий по определению выполняемых действий. К тому же и внимательное чтение хелпа по функции str() говорит достаточно однозначно о применении только левых пробелов для заполнения полученной строки.
авторIf nLength is greater than the length of the value evaluated by nExpression, STR( ) returns a character string padded with leading spaces.
Во всех остальных случаях все отпущенное функции пространство забивается значащими знаками.
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35443924
ZILIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, но у меня через ltrim(str(myarray )) не получилось(скорее всего из-за того что в массиве у меня есть элементы как character так и numeric), но функция transform() - самое то, спасибо.Теперь мне нужно сделать: replace all from myarray fields naim, заменяет только одну запись - первую, на все остальные "ноль внимания", из-за чего такое может быть?
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35443934
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.То есть на первое место поставлена какие-то собственные предрассудки или простое незнание
Знание есть, неиспользование этих знаний именно по идеологическим соображениям. Предрассудок или элемент моего стиля программирования - вопрос "вкуса и цвета".
Оптимизацию кода можно вести из разных соображений. вариант ltrim(str()) исходит из минимизации времени выполнения. Я предпочитаю исходить из читабельности кода, если время не критично.

PS Конкретно для случая alltrim(str()) сделал давным-давно собственную функцию ASTR(Число [, Точность]) которая это преобразование и делает. Только постить ее код для для столь простого примера не считаю необходимым, чтоб начинающих окончательно не запутывать.
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35443966
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZILIAreplace all from myarray fields naim
На этой строчке должна быть ошибка синтаксиса.

Объясни что делается, код реальный покажи, и зачем понадобилось из массива обратно в таблицу писать? Есть подозрение что использование массива вообще лишнее.
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35444223
ZILIA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица где я пытаюсь применить команду replace all from array... получена путем copy structure extended to 'progs'+mecn, в ней 207 записей. Я хочу поменять названия полей будущей таблицы, поэтому и делаю replace all from myarray fields field_name (не naim, а field_name). Далее я из этой 'progs'+mecn(mecn-отчетный период) я хочу сделать новую таблицу с помощью команды create from.
Вот код:
USE 'zatr_'+mecn IN 0 ALIAS prognoz
SELECT prognoz
COPY STRUCTURE EXTENDED TO 'progs_'+mecn
USE 'progs_'+mecn ALIAS strup IN 0
SELECT strup
kolz=RECCOUNT()
DIMENSION nm(kolz) as Character
SELECT strup
go top
LOCAL nnn as Character
FOR T=1 TO ALEN(NM)
nm[t]=TRANSFORM((nm[t]))
ENDFOR
FOR T=1 TO ALEN(NM)
nm[t]=alltrim(nm[t])
ENDFOR
*DISPLAY MEMORY LIKE nm
ALTER table strup alter field_name c(8)
go top
REPLACE ALL FROM ARRAY nm FIELDS field_name
brow
...
Рейтинг: 0 / 0
Как изменить тип элементов массива
    #35444393
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых массив не нужен, т.к.
Код: plaintext
ALTER table strup alter field_name c( 8 ) 
подставит в поле field_name STR(того что что там было). Остается только пробелы убрать.
Т.е. код такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
USE 'zatr_'+mecn IN  0  ALIAS prognoz
SELECT prognoz
COPY STRUCTURE EXTENDED TO 'progs_'+mecn
USE 'progs_'+mecn ALIAS strup IN  0 
SELECT strup
ALTER table strup alter field_name c( 8 ) 
REPLACE ALL field_name with alltrim(field_name)
brow

Если список полей заранее известен, то проще так сделать:
Код: plaintext
1.
2.
select field1, field2, ..., padr(alltrim(str(field_name)),  8 ) as field_name;
    from prognoz;
    into table ('progs_'+mecn)
Или так если имя поля можно изменить
Код: plaintext
1.
2.
select *, padr(alltrim(str(field_name)),  8 ) as field_name_char;
    from prognoz;
    into table ('progs_'+mecn)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как изменить тип элементов массива
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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