Вверх ↑
Разработчик
Ответов: 26170
Рейтинг: 2127
#1: 2013-11-11 11:47:27 ЛС | профиль | цитата
Galkov писал(а):
Чего-то мне так пока кажется

Сейчас попытаюсь сделать прототип задуманного в схемном решении. можно будет взвесить все "за" и "против".
------------ Дoбавленo в 11.47:
Вот что получилось:

Add(MainForm,4056909,168,147)
{
Width=290
Height=543
Position=1
}
Add(MultiReplace,3890216,623,329)
{
Delimiter="~"
EndSymbol="§"
link(onResult,12618799:doMultiReplace,[])
link(ReplaceList,2130139:Text,[(636,271)(720,271)(720,208)(685,208)])
}
Add(Button,14455952,168,196)
{
Left=105
Top=480
TabOrder=-1
Data=String()
link(onClick,1935334:doEvent1,[])
}
Add(Memo,6716458,735,329)
{
Top=340
Width=275
Height=135
ScrollBars=3
}
Add(ArrayEnum,15051145,378,329)
{
link(onItem,3890216:doMultiReplace,[])
link(Array,4022026:Var2,[])
}
Add(Hub,1935334,238,196)
{
OutCount=4
link(onEvent1,2130139:doClear,[(648,202)(648,146)])
link(onEvent2,1792289:doClear,[(417,209)(417,258)(648,258)(648,230)])
link(onEvent3,9353500:doEnum,[(263,216)(263,139)])
link(onEvent4,14699846:doEnum,[(277,223)(277,405)])
}
Add(ArrayEnum,9353500,294,133)
{
link(onItem,12418591:doSplit,[])
link(onEndEnum,15051145:doEnum,[(333,146)(333,335)])
link(Array,14423470:Array,[])
}
Add(MultiStrPart,12418591,371,133)
{
Char="~"
Count=1
link(onSplit,5564057:doSplit,[])
}
Add(MultiStrPart,5564057,420,133)
{
Char="§"
Count=1
link(onSplit,11516340:doConvert,[])
}
Add(Convertor,11516340,469,133)
{
Mode=6
Digits=3
link(onResult,11787064:doStrCatDlm,[])
link(Data,9353500:Index,[(475,124)(363,124)(363,173)(307,173)])
}
Add(StrCatDelim,11787064,518,133)
{
Str1="{**r"
Str2="r**}"
Point(Delimiter)
link(onStrCatDlm,15082620:doEvent1,[])
}
Add(FormatStr,9121106,609,133)
{
Mask="%1~%2§"
link(onFString,2130139:doAdd,[])
link(Str1,12418591:Part1,[(615,124)(559,124)(559,173)(377,173)])
}
Add(Hub,15082620,567,133)
{
link(onEvent1,9121106:doString,[])
link(onEvent2,7706705:doString,[(592,146)(592,223)])
}
Add(FormatStr,7706705,609,217)
{
Mask="%1~%2§"
link(onFString,1792289:doAdd,[])
link(Str2,5564057:Part1,[(622,194)(426,194)])
}
Add(MultiReplace,12618799,672,329)
{
Delimiter="~"
EndSymbol="§"
link(onResult,6716458:doAdd,[])
link(ReplaceList,1792289:Text,[])
}
Add(StrList,2130139,679,133)
{
}
Add(StrList,1792289,679,217)
{
}
Add(ListBox,12472830,364,259)
{
Left=5
Top=5
Width=130
Height=135
Strings=#3:1=b|3:1=B|4:acdf|
}
Add(ListBox,14423470,280,56)
{
Left=140
Top=5
Width=130
Height=135
Strings=#12:1=b~test1=B§|12:1=B~TEST1=b§|4:a~c§|4:c~d§|4:d~f§|4:f~g§|
}
Add(Label,10866566,161,91)
{
Left=5
Top=150
Width=268
Height=17
Font=[MS Sans Serif,10,1,0,1]
Caption="1-Way"
AutoSize=1
Alignment=2
}
Add(Memo,951728,735,399)
{
Left=5
Top=175
Width=270
Height=135
ScrollBars=3
}
Add(ArrayEnum,14699846,560,399)
{
link(onItem,10281728:doMultiReplace,[])
link(Array,4022026:Var3,[(566,313)])
}
Add(GetDataEx,4022026,378,308)
{
link(Data,12472830:Array,[])
}
Add(MultiReplace,10281728,623,399)
{
Delimiter="~"
EndSymbol="§"
link(onResult,951728:doAdd,[])
link(ReplaceList,14423470:Text,[(636,383)(286,383)])
}
Add(Label,10477188,168,103)
{
Left=5
Top=315
Width=268
Height=17
Font=[MS Sans Serif,10,1,0,1]
Caption="2-Way"
AutoSize=1
Alignment=2
}

Алгоритм очень простой: 1-й проход -- меняем нужные вложения на индексные маркеры, 2-й проход -- меняем индескные маркеры на нужные замены.
карма: 22

0