On-line: tnsr2, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
администратор




Пост N: 6668
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.12.17 13:54. Заголовок: Шаблон вывода


Есть допустим цифирь 26223.54 (заранее не известно какая будет цифра)
Хочу вывести ее с разделителем разрядов
? Transform(26223.54,"999'999'999.99") // выводит ' 26'223.54
а хотелось бы так 26'223.54 , есть ли какой шаблон или функция для этого (или же писать самопал) ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 13 [только новые]


постоянный участник




Пост N: 5670
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.12.17 14:05. Заголовок: Dima пишет: есть ли..


Dima пишет:

 цитата:
есть ли какой шаблон или функция для этого (или же писать самопал) ?


Скорее всего нет.
Пиши функцию после обработки Transform().

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6669
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.12.17 14:37. Заголовок: Andrey пишет: Пиши ..


Andrey пишет:

 цитата:
Пиши функцию после обработки Transform().


На вскидку и на скорую руку получилось так
 
a:=123456789.99

? tt(transform(a,"999'999'999'999'.99"))

? tt(Transform(26223.54,"999'999'999.99"))


wait

Func tt(cstr)
local el
local i:=0

for each el in cstr
i++
if isdigit(el)
exit
endif
next

return padl(substr(cstr,i),len(cstr))


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5671
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.12.17 17:25. Заголовок: Кстати, а как вывод ..


Кстати, а как вывод мемо-поля сделать ?
А то достала буковка Н везде при выводе мемо-поля...

База в кодировке 866, приложение в 1251.
Вывожу:
? ALLTRIM(MEMOTRAN(TOVAR->MREM,' ',' '))

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6670
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 30.12.17 17:38. Заголовок: Тоже так делаю но бу..


Тоже так делаю но буквы H нет при выводе , правда база и приложение в 866 , да и MEMO
не юзаю , для таких вещей использую поле "C" примерно до 250 знаков.
С MEMO в своё время напарился , так как при сбое компа , как ни странно портился MEMO файл.

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 556
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 30.12.17 22:32. Заголовок: Andrey пишет: Кстат..


Andrey пишет:

 цитата:
Кстати, а как вывод мемо-поля сделать ?
А то достала буковка Н везде при выводе мемо-поля...

База в кодировке 866, приложение в 1251.
Вывожу:
? ALLTRIM(MEMOTRAN(TOVAR->MREM,' ',' '))



У меня CHR(141) возникала после редактирования хоть мемо-поля, хоть простой переменной в MEMOEDIT() с "коротким" значением параметра "длина строки":

FUNCTION MemoEdit( ; 
cString, ;
nTop, ;
nLeft, ;
nBottom, ;
nRight, ;
lEditMode, ;
xUserFunction, ;
nLineLength, ;
nTabSize, ;
nTextBuffRow, ;
nTextBuffColumn, ;
nWindowRow, ;
nWindowColumn )

По умолчанию там стоит hb_default( @nLineLength , nRight - nLeft + 1 )

Я сделал 65535 - больше CHR(141) не мешают жить. Тьфу*3.

Раз уж оффтопим, есть какой "заменитель" MEMOEDIT(), чтобы поддерживал SHIFT+стрелки = выделение/копирование/удаление/вставка текста, чтобы "по взрослому" ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 558
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 31.12.17 14:07. Заголовок: По теме топика: ATR..


По теме топика:

ATREPL(" '",Transform(26223.54,"999'999'999.99"),"  ")
решает поставленную задачу: пробел с апострофом заменяет на два пробела + сохраняет заданную ширину.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6673
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.12.17 14:49. Заголовок: Sergy Да тоже вариа..


Sergy
Да тоже вариант !

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 179
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 01.01.18 23:35. Заголовок: STRTRAN(ALLTRIM(Tran..


STRTRAN(ALLTRIM(Transform(26223.54,"999 999 999.99"))," ","'")

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5953
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.07.18 11:07. Заголовок: Всем привет ! Есть п..


Всем привет !
Есть папка с файлами типа Test8_4DocOle_12.07.2018.doc, Test8_4DocOle_12.07.2018(1).doc, Test8_4DocOle_12.07.2018(2).doc и т.д.
Нужно получить новое имя файла которое будет больше предыдущего на единицу.
Т.е. как сам Windows сам делает при записи нового файла в папку.
Хотелось бы иметь в Харборе(МиниГуи) стандартную функцию типа GetFileNameMask("Test8_4DocOle_12.07.2018")
Может кто себе уже сделал ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1925
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.07.18 11:43. Заголовок: Andrey *----------..


Andrey
 
*----------------------------------------------------------------------------*
FUNC _FileNameNum( cFile )
*----------------------------------------------------------------------------*
LOCAL i := 0
LOCAL cExt := hb_FNameExt (cFile)
LOCAL cFil := hb_FNameName(cFile)

If ! hb_FileExists(cFile); RETURN cFile
EndIf

WHILE ( hb_FileExists(cFil + ' (' + hb_ntos(++i) + ')' + cExt) )
END

RETURN ( cFil + ' (' + hb_ntos(i) + ')' + cExt )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5954
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.07.18 12:20. Заголовок: SergKis Спасибо БОЛ..


SergKis
Спасибо БОЛЬШОЕ !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5955
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.07.18 13:10. Заголовок: Не совсем правильно ..


Не совсем правильно работает.
Первый раз правильно, т.е. возвращает файл с путём, второй и т.д. неправильно - возвращает только файл.
Я думаю что нужно модифицировать:
 * ====================================================================== 
FUNC GetFileNameMask( cFile )
LOCAL cExt := hb_FNameExt (cFile)
LOCAL cFil := hb_FNameName(cFile)
LOCAL cPth := hb_FNameDir (cFile)
LOCAL i := 0

If ! hb_FileExists(cFile); RETURN cFile
EndIf

WHILE ( hb_FileExists(cFil + '(' + hb_ntos(++i) + ')' + cExt) )
END
cFile := cFil + '(' + hb_ntos(i) + ')' + cExt
IF AT("\",cFile) > 0
cFile := hb_FNameName(cFile)
ENDIF

RETURN ( cPth + cFile )



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1929
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.07.18 13:50. Заголовок: Andrey Извини дал с..


Andrey
Извини дал старый вариант.
 
*----------------------------------------------------------------------------*
FUNC FileNameNum( cFile ) // При наличии файла добавить число версии в имя
*----------------------------------------------------------------------------*
LOCAL i := 0, cPth, cFil, cExt

If ! hb_FileExists(cFile); RETURN cFile
EndIf

hb_FNameSplit(cFile, @cPth, @cFil, @cExt)

WHILE ( hb_FileExists( hb_FNameMerge(cPth, cFil + ' (' + hb_ntos(++i) + ')', cExt) ) )
END

RETURN hb_FNameMerge(cPth, cFil + ' (' + hb_ntos(i) + ')', cExt)


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 555
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет