Форум » [x]Harbour » Шаблон вывода » Ответить

Шаблон вывода

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

Ответов - 8

Andrey: Dima пишет: есть ли какой шаблон или функция для этого (или же писать самопал) ? Скорее всего нет. Пиши функцию после обработки Transform().

Dima: Andrey пишет: Пиши функцию после обработки Transform(). На вскидку и на скорую руку получилось так [pre2] 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)) [/pre2]

Andrey: Кстати, а как вывод мемо-поля сделать ? А то достала буковка Н везде при выводе мемо-поля... База в кодировке 866, приложение в 1251. Вывожу: ? ALLTRIM(MEMOTRAN(TOVAR->MREM,' ',' '))


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

Sergy: Andrey пишет: Кстати, а как вывод мемо-поля сделать ? А то достала буковка Н везде при выводе мемо-поля... База в кодировке 866, приложение в 1251. Вывожу: ? ALLTRIM(MEMOTRAN(TOVAR->MREM,' ',' ')) У меня CHR(141) возникала после редактирования хоть мемо-поля, хоть простой переменной в MEMOEDIT() с "коротким" значением параметра "длина строки": [pre2]FUNCTION MemoEdit( ; cString, ; nTop, ; nLeft, ; nBottom, ; nRight, ; lEditMode, ; xUserFunction, ; nLineLength, ; nTabSize, ; nTextBuffRow, ; nTextBuffColumn, ; nWindowRow, ; nWindowColumn ) [/pre2] По умолчанию там стоит hb_default( @nLineLength , nRight - nLeft + 1 ) Я сделал 65535 - больше CHR(141) не мешают жить. Тьфу*3. Раз уж оффтопим, есть какой "заменитель" MEMOEDIT(), чтобы поддерживал SHIFT+стрелки = выделение/копирование/удаление/вставка текста, чтобы "по взрослому" ?

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

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

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



полная версия страницы