Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26170
Рейтинг: 2127
#31: 2010-11-28 19:34:17 ЛС | профиль | цитата
Ivann писал(а):
И где ты это нашел?

Просмотри ассмеблерный код, и вопросы отпадут
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#32: 2010-11-28 19:37:04 ЛС | профиль | цитата
Ivann,
Tad писал(а):
Читай теорию.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8930
Рейтинг: 823
#33: 2010-11-28 19:41:37 ЛС | профиль | цитата
Tad, а где изменить количество знаков после (до) запятой
------------ Дoбавленo в 19.41:
И вообще "ни строчки кода"

Add(Edit,5371863,140,161)
{
Left=20
Top=30
Width=135
Text="3,1415926535897932384626433832795"
link(onEnter,10165717:doCalc,[])
}
Add(Edit,7900636,189,119)
{
Left=20
Top=5
Width=25
Text="2"
DataType=2
}
Add(Label,15483476,231,119)
{
Left=45
Top=10
Width=111
Height=17
Caption="знака после запятой"
}
Add(MultiElementEx,10165717,189,168)
{
@Hint=#45:Округление числа с добавлением незначащих "0"|
link(Событие происходит при выполнении операции и выдаёт в поток результат,5371863:doText2,[(231,174)(231,206)(133,206)(133,174)])
link(Count,7900636:Text,[])
}
BEGIN_SDK
Add(EditMultiEx,15874936,21,21)
{
WorkCount=#22:doCalc=Округлить число|
EventCount=#69:Событие происходит при выполнении операции и выдаёт в поток результат|
VarCount=#31:Res=Содержит результат операции|
DataCount=#122:Count=Число знаков ПОСЛЕ запятой (max=14), (отрицательные значения соответствуют количеству округляемых знаков ДО запятой)|
Width=503
link(doCalc,4773259:doReplace,[(35,27)(35,69)])
link(Res,7300122:Value,[(27,194)(482,194)])
}
Add(Replace,4773259,49,63)
{
SubStr=","
DestStr="."
link(onReplace,11959508:doCalc,[])
}
Add(Copy,15789733,385,112)
{
Position=3
Count=2
link(onCopy,16499783:doStrCatDlm,[])
link(Count,5330610:Var3,[(405,47)])
}
Add(StrCatDelim,16499783,427,112)
{
Delimiter="."
link(onStrCatDlm,8378294:doWork3,[(467,118)])
link(Str1,10130134:Result,[(433,104)(209,104)])
}
Add(MathParse,11959508,91,63)
{
MathStr="round(%1, 1/(10^%2))"
link(onResult,2688245:doCompare,[])
link(X2,16551706:Var2,[])
}
Add(If_else,2688245,133,63)
{
Type=3
Op2=Integer(0)
link(onTrue,8378294:doWork2,[(182,69)(182,55)])
link(onFalse,2303927:doEvent1,[])
link(Op1,5330610:Var2,[])
}
Add(GetDataEx,5330610,133,42)
{
Angle=3
link(Data,16551706:Var3,[])
}
Add(If_else,9368752,245,112)
{
Op2=Integer(0)
link(onTrue,7491253:doStrCatDlm,[])
link(onFalse,16615170:doStrCat,[(289,125)(289,160)])
}
Add(Hub,2303927,175,70)
{
link(onEvent1,10130134:doCalc,[(196,76)(196,69)])
link(onEvent2,1778661:doCalc,[(196,83)(196,118)])
}
Add(MathParse,10130134,203,63)
{
DataCount=1
MathStr="trunc(%1,1)"
}
Add(MathParse,1778661,203,112)
{
DataCount=1
MathStr="frac(%1,1)"
link(onResult,9368752:doCompare,[])
}
Add(StrCat,16615170,294,154)
{
Str2="00000000000000"
link(onStrCat,10204209:doWork3,[(333,160)])
}
Add(StrCatDelim,7491253,294,112)
{
Delimiter="."
Str2="000000000000000"
link(onStrCatDlm,10204209:doWork2,[])
}
Add(HubEx,10204209,329,112)
{
link(onEvent,7292377:doReplace,[])
}
Add(Memory,7300122,476,49)
{
link(onData,15874936:Событие происходит при выполнении операции и выдаёт в поток результат,[(516,55)(516,27)])
}
Add(HubEx,8378294,463,49)
{
link(onEvent,7300122:doValue,[])
}
Add(GetDataEx,16551706,98,42)
{
Angle=3
link(Data,15874936:Count,[(27,47)])
}
Add(Replace,7292377,343,112)
{
SubStr="-"
link(onReplace,15789733:doCopy,[])
}
END_SDK

карма: 19

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#34: 2010-11-28 19:45:15 ЛС | профиль | цитата
Леонид писал(а):
И вообще "ни строчки кода"

Как всегда, Леонид в своем репертуаре -- умопомрачительная схема на очень простое действие . А проще это сделать никак нельзя
карма: 22

0
Ответов: 8930
Рейтинг: 823
#35: 2010-11-28 19:50:37 ЛС | профиль | цитата
nesco, я всегда пытаюсь сделать в "общем виде", чтобы программа охватывала все допустимые значения, поэтому и размер больше, но я (да и мы все) приветствую более рациональные решения, обладающие таким же функционалом
карма: 19

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#36: 2010-11-28 19:53:14 ЛС | профиль | цитата
Леонид писал(а):
приветствую более рациональные решения, обладающие таким же функционалом

Вот я и спросил
nesco писал(а):
А проще это сделать никак нельзя


карма: 22

0
Ответов: 16884
Рейтинг: 1239
#37: 2010-11-28 20:04:56 ЛС | профиль | цитата
Леонид писал(а):
а где изменить количество знаков после (до) запятой
Леонид, насколько я понял -
------------ Дoбавленo в 20.01:
это нужно для бухгалтерскиж документов. Хотя, для изменения числа знаков после запятой - добавится одна точка и одна строчка кода
nesco, тоже два раза нажимал на "Отправить"
------------ Дoбавленo в 20.03:
а изменять количество знаков ДО запятой бухгалтерам наказуемо.
------------ Дoбавленo в 20.04:
а у меня отправить сообщение в 3-4 строчки только через добавить.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#38: 2010-11-28 20:06:31 ЛС | профиль | цитата
[flood]
Tad писал(а):
тоже два раза нажимал на "Отправить"

У меня, почему-то, иногда и на один двыжды отрабатывает. ХЗ, почему [/flood]

карма: 22

0
Ответов: 5227
Рейтинг: 587
#39: 2010-11-28 20:10:32 ЛС | профиль | цитата
Для самого рядового кодера это задача из двух строк превращается в неопредолимое препятствие для экспертов в HiAsm как Ravilr, парадокс да и только.

карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 8930
Рейтинг: 823
#40: 2010-11-28 20:18:50 ЛС | профиль | цитата
Tad, к компьютерному округлению в бухгалтерских документах вообще надо относиться осторожно, запросто можно отчётные копейки, а при длинных простынях и рубли потерять у них дебет-кредит должны сходиться
карма: 19

0
Ответов: 4641
Рейтинг: 334
#41: 2010-11-28 20:28:19 ЛС | профиль | цитата
andrestudio, читаем тему с самого начала..внимательно, а потом пишем!
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 5227
Рейтинг: 587
#42: 2010-11-28 20:33:31 ЛС | профиль | цитата
Ravilr, а я по твоему что читать не умею?


Округление дробных чисел с точностью i - количество знаков после запятой, S - дробное число в строковом виде.

function FormatData(s: String; i: Integer): String;
begin
Result:=FloatToStr(Round(StrToFloat(s)*exp(i*ln(10)))/(exp(i*ln(10))));
end;


мне бы твои проблемы!!!

карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 3349
Рейтинг: 233
#43: 2010-11-28 20:34:57 ЛС | профиль | цитата
andrestudio писал(а):
Округление

карма: 1

0
Ответов: 4641
Рейтинг: 334
#44: 2010-11-28 20:37:32 ЛС | профиль | цитата
andrestudio писал(а):
а я по твоему что читать не умею?

я этого не говорил, я говорю что мало уметь читать, необходимо понять суть! А суть такова.
Ravilr писал(а):
На рассыпухе можно сделать, а может я что то не угледел в элементной базе и можно на пару элементах?


и в итоге IC

Так что на этом тему можно закрыть!
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 3349
Рейтинг: 233
#45: 2010-11-28 20:40:35 ЛС | профиль | цитата
nesco писал(а):
Просмотри ассмеблерный код, и вопросы отпадут

С таблицей переходов конечно быстрее, но с использованием Else я преимуществ не нашел
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)