Вверх ↑
Разработчик
Ответов: 26163
Рейтинг: 2127
#1: 2008-05-10 01:15:52 ЛС | профиль | цитата
С доп точками проблем никаких, добавить можно. А с doMatch я не совсем понял, что надо -- какой формат строки для поиска подается на вход -- ряд строк для поиска, заключенных в скобки(выражение), и что на выходе должно получиться -- индекс+найденное выражение (MT-поток), и так в цикле, пока все выражения не переберем, так что ли

------------ Дoбавленo:


Добавил StrToFind и Index

------------ Дoбавленo:


tsdima писал(а):
поиск с использованием регулярных выражений

А у тебя, случаем, нет простенького парсера регулярных выражений, а то я нашел на 150 кило -- RegExpr называется

------------ Дoбавленo:


Добавил в StrList еще и GetString

Вот какой получился сервер с новым StrList'ом



Add(MainForm,10952570,42,77)
{
Left=20
Top=105
Width=323
Height=210
Caption="DDE_Server"
link(onCreate,14007143:doStart,[])
}
Add(DDEServer,14007143,133,91)
{
ServiceName="DDE_Server"
TopicList=#5:Form1|
Point(doSetError)
Point(onConnect)
Point(onExecute)
link(onGetItem,8634435:doEvent1,[])
link(onPutItem,1330340:doEvent1,[(187,104)(187,146)])
link(onExecute,2584967:doMessage,[(177,118)(177,154)(72,154)(72,174)])
}
Add(Message,2584967,84,168)
{
Type=1
Point(onCANCEL)
link(Caption,14007143:TopicName,[(97,145)(139,145)])
link(onCANCEL,14007143:doSetError,[(124,181)(124,125)])
}
Add(GetIndexData,2907638,434,280)
{
link(Data1,5519043:Text,[])
link(Data2,12515059:Text,[])
}
Add(IndexToChanel,9620357,385,182)
{
Point(Index)
link(onEvent1,5519043:doText,[])
link(onEvent2,12515059:doText,[(426,195)(426,230)])
link(Index,10155259:Index,[])
}
Add(Hub,1330340,203,140)
{
link(onEvent1,14132275:doWork2,[])
link(onEvent2,9620357:doEvent,[(279,153)(279,188)])
}
Add(Edit,5519043,434,182)
{
Left=95
Top=50
Width=135
Height=25
Text="Text1"
link(onChange,14969987:doWork1,[])
}
Add(Edit,12515059,441,224)
{
Left=95
Top=95
Width=135
Height=25
Text="Text2"
link(onChange,14969987:doWork2,[(485,230)(485,195)])
}
Add(StrList,10155259,364,91)
{
@Hint=#10:Item Names|
Strings=#5:Text1|5:Text2|
Point(onGetIndex)
Point(onGetString)
Point(StrToFind)
Point(doGetString)
Point(doGetIndex)
Point(Index)
link(onGetIndex,2907638:doIndex,[(406,104)(406,286)])
link(onGetString,14007143:doSendChanges,[(419,111)(419,63)(103,63)(103,118)])
link(StrToFind,14007143:ItemName,[(384,79)(326,79)(326,170)(153,170)])
}
Add(ChanelToIndex,14969987,497,182)
{
link(onIndex,10155259:doGetString,[(542,188)(542,71)(352,71)(352,139)])
}
Add(DoData,1922078,280,98)
{
link(onEventData,14007143:doReturnItem,[(320,104)(320,79)(110,79)(110,111)])
link(Data,2907638:Var,[(286,88)(270,88)(270,322)(440,322)])
}
Add(Hub,8634435,203,91)
{
link(onEvent1,14132275:doWork1,[(256,97)])
link(onEvent2,1922078:doData,[])
}
Add(HubEx,14132275,252,133)
{
link(onEvent,10155259:doGetIndex,[])
}

------------ Дoбавленo:

В сервер надо бы добавить верхнюю точку -- ReturnItem, а то лишний компонент приходится ставить
------------ Дoбавленo:

Короче, я все, вместе с примерами, добавил на SVN. Так проще будет корректировать.
карма: 22

0