Aziz писал(а):
Просто компонент Grafer3 (см. раздел модов компонентов) делает выборку в массив real.Чтоб не размножать массивы и экономить память.
Tad, спасибо, но это тоже работа со строками у тебя. А я пытался выудить из типа Real информацию которую он совершенно не носит и не обязан носить в себе - незначащие нули. Это глупо и было тупиковое мое заблуждение.. Вроде как сделать квадрат еще квадратнее. Отдыхать чаще нужно наверное. Ну а вы чего молчали? Господа программеры. Но спасибо Tad вывел меня из опасного ступора и я пошел окольным и легким, но как оказалось единственно верным путем - путем увеличения избыточности информации, путем создания строкового массива параллельно дробному, перестав искать черную кошку которой нет в черной комнате - сохранение незначащих нулей в типе Real. Но ничего хоть узнал побольше об этом типе, что например, он устарел уже и лучше использовать Double.
У меня этих схем уже коллекция - вагон и тележка: )) Собрал в одну кучу:
Add(Button,1448047,210,245)
{
Top=30
Data=Real(1.2)
link(onClick,726730:doTest,[])
}
Add(InlineCode,726730,280,245)
{
WorkPoints=#6:doTest|
EventPoints=#5:onRes|
DataPoints=#3:str|
Code=#15:unit HiAsmUnit;|13:// Author Tad|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|20:// vr : TData;|9: public|9: str,|23: onRes : THI_Event;|51: PROCEDURE doTest(var _Data:TData; Index:Word);|0:|5: end;|0:|14:implementation|0:|29:PROCEDURE THiAsmClass.doTest;|14: var s:string;|5:BEGIN|23: s:=toStringEvent(str);|22: _hi_onEvent(onRes,s);|4:END;|0:|0:|4:end.|
link(onRes,13167314:doText,[])
link(str,4882742:Text,[])
}
Add(Edit,4882742,280,189)
{
Top=5
Width=100
Text="1,234000"
}
Add(Label,13167314,350,245)
{
Left=60
Top=30
}
Add(ConvertorEx,11198504,259,329)
{
Mode=15
}
Add(InlineCode,15940586,630,301)
{
WorkPoints=#6:doWork|
EventPoints=#5:onRes|
DataPoints=#6:Number|6:Width |9:Decimals |
Code=#15:unit HiAsmUnit;|17:// Tad 2011.11.25|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|10: Number,|10: Width, |13: Decimals, |19: onRes:THI_Event;|48: Procedure doWork(var _Data:TData;Index:Word);|5: end;|0:|14:implementation|29:Procedure THiAsmClass.doWork;|15:var a :Double;|17: b,c:Integer; |16: text: string;|0:|5:Begin|27: a:=ReadReal(_Data,Number);|26: b:=toIntegerEvent(Width);|30: c:=toIntegerEvent(Decimals); |17: Str(a:b:c,text);|25: _hi_onEvent(onRes,text);|4:End;|4:end.|
link(onRes,11942362:doAdd,[])
link(Width ,16048682:Text,[(643,285)(615,285)])
link(Decimals ,15141932:Text,[(650,285)(664,285)])
}
Add(Button,13672642,539,301)
{
Left=15
Top=85
Width=100
Caption="123"
Data=Integer(123)
link(onClick,8159469:doWork2,[])
}
Add(ListBox,11942362,700,301)
{
Left=120
Top=10
Width=115
Height=220
Font=[Fixedsys,8,0,0,204]
}
Add(Button,8692909,539,252)
{
Left=15
Top=120
Width=100
Caption="1234.56789"
Data=String(1234.56789)
link(onClick,8159469:doWork1,[(592,258)])
}
Add(HubEx,8159469,588,301)
{
link(onEvent,15940586:doWork,[])
}
Add(VisualStrings,16048682,609,252)
{
Lines=#2:10|
}
Add(VisualStrings,15141932,658,252)
{
Lines=#1:2|
}
Add(Button,6931925,798,308)
{
Left=275
Top=210
Width=100
Caption="123"
Data=Integer(123)
link(onClick,7178742:doEnum,[])
}
Add(ListBox,9792984,1057,308)
{
Left=400
Top=10
Width=115
Height=220
Font=[Fixedsys,8,0,0,204]
}
Add(ConvertorEx,9617692,945,308)
{
Mode=15
Decimals=4
link(onResult,5361342:doReplace,[])
}
Add(ListBox,9434044,868,203)
{
Left=280
Top=10
Width=110
Height=185
Strings=#5:1.230|5:0.120|6:12.340|6:14.567|6:15.000|7:210.234|0:|
}
Add(ArrayEnum,7178742,882,308)
{
link(onItem,9617692:doConvert,[])
link(Array,9434044:Array,[])
}
Add(Replace,5361342,1001,308)
{
SubStr="."
link(onReplace,9792984:doAdd,[])
}
Add(MainForm,2953706,126,105)
{
Width=558
Height=385
}
Add(InlineCode,16135437,1218,280)
{
WorkPoints=#6:doTest|
EventPoints=#5:onRes|
Code=#15:unit HiAsmUnit;|13:// Author Tad|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|4: |24: onRes : THI_Event;|51: PROCEDURE doTest(var _Data:TData; Index:Word);|0:|5: end;|0:|14:implementation|0:|29:PROCEDURE THiAsmClass.doTest;|13:var s:string;|11: z:word;|5:BEGIN|39: s:=toString(_Data); // получаем строку|65: z:=Length(CopyEnd(s,Pos('.',s)+1)); // число знаков после точки |22: _hi_onEvent(onRes,z);|4:END;|0:|0:|4:end.|
link(onRes,2081365:doText,[])
}
Add(Button,5560753,1141,273)
{
Left=25
Top=295
Data=String(1.2000)
link(onClick,15130386:doEvent1,[])
}
Add(Label,2236225,1218,238)
{
Left=240
Top=275
}
Add(Hub,15130386,1183,273)
{
link(onEvent1,2236225:doText,[(1207,279)(1207,244)])
link(onEvent2,16135437:doTest,[])
}
Add(Label,10023389,1141,238)
{
Left=110
Top=275
Width=95
Height=50
Caption="Число\r\n\r\nЗнаков после ".""
AutoSize=1
Alignment=1
}
Add(Label,2081365,1288,280)
{
Left=240
Top=300
}