В предыдущей схеме ошибка (исправленная) -- надо установить в DataToFile.Type=dtLines, конечно же
nesco, вот чего я заметил, просматривая возможность замены DataToFile на DataToFileEx в последней схеме:
- Нижняя точка Position есть, а Size - нету. Несправедливо как-то...
- Методы dtAnsiString и dtLines - тупо скопированы, и - работают, конечно же. А вот ошибок чтения/записи - не генерируют правильно (тупо позабыл).
Кстати, ошибки чтения для этих методов возможны только в одном случае - конец файла (прочитано 0 байт). А иначе, прочитается, как минимум, какой-нибудь терминальный символ.
Поэтому, вышеозначенную схему можно было бы упростить чуток:
Пример с DataToFileEx
Add(DataToFileEx,9746904,420,49)
{
Type=4
Point(doPosition)
Point(Position)
Point(onRdError)
link(onGet,786843:doCharset,[])
link(Stream,12437222:Stream,[(426,40)(440,40)(440,285)(335,285)])
link(onRdError,2979535:doStop,[(459,62)(459,97)(354,97)(354,62)])
}
Add(Hub,2606912,147,161)
{
OutCount=4
link(onEvent1,12714162:doClear,[(172,167)(172,69)])
link(onEvent2,6449920:doClear,[])
link(onEvent3,12437222:doOpen,[(270,181)(270,237)])
link(onEvent4,12675296:doRepeat,[(172,188)(172,230)])
}
Add(SharedStream,12437222,329,231)
{
PageMem=1280
Point(FileSize)
Point(FileOffset)
link(Offset,6449920:Result,[])
AddHint(24,-20,39,13,PageMem)
}
Add(Math,6449920,343,161)
{
Op2=4194304
Point(doClear)
link(onResult,13850635:doCalc,[])
link(Op1,12437222:FileOffset,[(349,152)(384,152)(384,271)(363,271)])
AddHint(7,-35,66,13,Op2)
}
Add(Charset,786843,490,49)
{
Type=7
link(onCharset,7154492:doWork,[])
}
Add(Button,2506679,49,161)
{
Left=14
Top=14
link(onClick,9843132:doExecute,[])
}
Add(ProgressBar,9114966,490,126)
{
Left=82
Top=14
Width=525
}
Add(MathParse,13850635,399,161)
{
MathStr="%2 * 100 / %1"
ResultType=0
link(onResult,15947962:doEvent1,[])
link(X1,12437222:FileSize,[(405,152)(391,152)(391,278)(356,278)])
}
Add(Hub,15947962,448,161)
{
link(onEvent1,9114966:doPosition,[(473,167)(473,132)])
link(onEvent2,5675648:doCaption,[])
}
Add(ODialog,9843132,98,161)
{
link(onExecute,2606912:doEvent1,[])
}
Add(Application,12592788,266,245)
{
Wait=1
Point(onTerminate)
link(onTerminate,12675296:doStop,[(305,251)(305,286)(172,286)(172,237)])
}
Add(Repeat,12675296,182,224)
{
Type=4
Op2=Integer(100)
Check=1
link(onRepeat,894652:doEvent1,[])
link(Op1,13850635:Result,[(188,208)(405,208)])
}
Add(Hub,894652,231,224)
{
OutCount=4
link(onEvent1,12018389:doEvent1,[(256,230)(256,48)])
link(onEvent2,6449920:doOperation,[(263,237)(263,167)])
link(onEvent3,12437222:doRemapping,[])
link(onEvent4,12592788:doProcessMessages,[])
}
Add(LineBreakEx,7154492,539,49)
{
Caption="Enum_Lines"
}
Add(MainForm,5675648,490,168)
{
Left=20
Top=105
Width=641
Height=90
Caption="FileMapVewer"
Position=1
Point(onClose)
}
Add(Repeat,2979535,364,49)
{
Type=1
Op2=Real(4194304)
link(onRepeat,9746904:doGet,[])
link(Op1,9541802:Var2,[])
AddHint(8,-37,66,13,Op2)
}
Add(Hub,12018389,266,42)
{
OutCount=3
link(onEvent1,2128108:doData,[(291,48)(291,104)])
link(onEvent2,2979535:doRepeat,[])
link(onEvent3,12714162:doOperation,[])
}
Add(Math,12714162,308,56)
{
OpType=1
Op2=4194304
Point(doClear)
link(Op1,9541802:Var1,[(314,33)])
AddHint(-21,-44,66,13,Op2)
}
Add(GetDataEx,9541802,364,28)
{
Angle=1
link(Data,9746904:Position,[(412,33)(412,89)(433,89)])
}
Add(DoData,2128108,308,98)
{
link(onEventData,9746904:doPosition,[(403,104)(403,69)])
link(Data,12714162:Result,[])
}