Вверх ↑
Ответов: 499
Рейтинг: 1
#1: 2007-08-02 21:17:51 ЛС | профиль | цитата
я недавно тоже столкнулся. но сначала я отконвертировал файл, а потом его в StrList грузил. примерно вот так:
Add(Console,5753902,28,154)
{
Title="unix2dos"
link(onStart,3875011:doStart,[])
}
Add(FileStream,3108897,203,154)
{
FileName="unix"
}
Add(Hub,4299685,140,154)
{
OutCount=3
link(onEvent1,3108897:doOpen,[])
link(onEvent2,8852071:doCopy,[(182,167)(182,251)])
link(onEvent3,3108897:doClose,[(191,174)(191,167)])
}
Add(DataToFile,476682,357,245)
{
link(onGet,3772007:doCompare,[])
link(Stream,12741365:Var2,[])
}
Add(For,1938234,301,245)
{
IncludeEnd=1
link(onEvent,476682:doGet,[(348,251)(348,258)])
link(onStop,14966107:doEvent1,[(341,258)(341,293)])
link(End,15523919:Var3,[(314,205)])
}
Add(StrList,6032640,644,385)
{
FileName="dos"
}
Add(DataToFile,13023719,595,238)
{
link(Stream,9476324:Var1,[(601,219)])
}
Add(If_else,3772007,406,245)
{
Op2=Integer(10)
link(onTrue,4335324:doEvent1,[(446,251)(446,237)])
link(onFalse,1658584:doWork3,[(550,258)])
}
Add(Hub,4335324,455,231)
{
link(onEvent1,14527331:doData,[(495,237)(495,223)])
link(onEvent2,1658584:doWork2,[])
}
Add(DoData,14527331,504,217)
{
Data=Integer(13)
link(onEventData,1658584:doWork1,[(550,223)])
}
Add(HubEx,1658584,546,231)
{
link(onEvent,13023719:doPut,[])
}
Add(MemoryStream,4473835,651,154)
{
Point(doPosition)
}
Add(FileStream,7080374,595,287)
{
FileName="dos"
Mode=1
}
Add(GetDataEx,15523919,203,196)
{
link(Data,3108897:Size,[])
}
Add(StreamCopy,2765296,644,343)
{
link(Dest,7080374:Stream,[(650,331)(601,331)])
link(Source,9476324:Var2,[])
link(Count,4473835:Size,[])
}
Add(Hub,14966107,518,287)
{
OutCount=6
link(onEvent1,7080374:doOpen,[])
link(onEvent2,9464850:doData,[(566,300)(566,160)])
link(onEvent3,2765296:doCopy,[(577,307)(577,349)])
link(onEvent4,7080374:doClose,[(587,314)(587,300)])
link(onEvent5,6032640:doLoad,[(568,321)(568,419)])
link(onEvent6,3875011:doStop,[(560,328)(560,348)(75,348)(75,167)])
}
Add(DoData,7387525,301,154)
{
Data=Integer(0)
link(onEventData,14519559:doPosition,[(345,160)(345,174)])
}
Add(GetDataEx,9476324,644,210)
{
link(Data,4473835:Stream,[])
}
Add(TimeCounter,3875011,84,154)
{
link(onStart,4299685:doEvent1,[])
link(onStop,5753902:doWrite,[(124,167)(124,143)(16,143)(16,160)])
}
Add(StreamCopy,8852071,196,245)
{
link(Dest,12741365:Var1,[(202,219)])
link(Source,3108897:Stream,[])
link(Count,15523919:Var2,[])
link(onCopy,3004573:doEvent1,[])
}
Add(MemoryStream,14519559,357,154)
{
Point(doPosition)
}
Add(DoData,9464850,595,154)
{
Data=Integer(0)
link(onEventData,4473835:doPosition,[(639,160)(639,174)])
}
Add(GetDataEx,12741365,350,210)
{
link(Data,14519559:Stream,[])
}
Add(Hub,3004573,245,245)
{
link(onEvent1,7387525:doData,[(285,251)(285,160)])
link(onEvent2,1938234:doFor,[(292,258)(292,251)])
}
файл размером 10000000 байт (KOL book Кладова в html) отработал за 27 секунд.

[size=-2]------ Добавлено в 21:17
хех. если элемент If-else заменить на инлайн-код:
begin 
  x := ReadInteger(_Data, Data, 0);
if (x=10) then _Hi_OnEvent(onResult, 13);
_Hi_OnEvent(onResult, x);
end;
то тот же файл отрабатывается за 15 секунд.

а еще - это мои первые строки на паскале, чему я безмерно рад ;)
карма: 0

0