Вверх ↑
Ответов: 39
Рейтинг: 0
#1: 2021-05-26 20:21:24 ЛС | профиль | цитата
Решил делать все-таки через Newtonsoft.Json.dll
Получилась такая схема

Add(MultiElement,9194804,259,189)
{
}
BEGIN_SDK
Add(EditMulti,9559666,21,21)
{
EventCount=1
WorkCount=1
DataCount=1
VarCount=1
Width=860
Height=557
link(doWork1,14658533:doStrCat,[(39,27)(39,195)])
}
Add(WinExec,14655721,637,322)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleResult)
Point(onConsoleError)
Point(onConsoleTerminate)
link(onConsoleTerminate,85823:doEvent1,[])
}
Add(FormatStr,2184033,581,336)
{
DataCount=3
Mask="Add-Type -Path '%1\Newtonsoft.Json.dll'\r\n$FileName = '%2'\r\n$json = (Get-Content $FileName | Out-String)\r\n[Newtonsoft.Json.JsonConvert]::DeserializeXNode($json, 'Root') | set-content %3\r\n"
link(onFString,14655721:doConsoleExec,[])
link(Str1,3456739:Var3,[(587,96)])
link(Str2,15803434:Var3,[(594,299)])
link(Str3,7164910:Var3,[(601,303)])
}
Add(Random,6570850,294,238)
{
Min=100000000
Max=999999999
link(onRandom,2477111:doString,[])
}
Add(Hub,14852155,217,154)
{
OutCount=6
link(onEvent1,10115733:doStrCat,[(259,160)(259,132)])
link(onEvent2,6570850:doRandomize,[(263,167)(263,251)])
link(onEvent3,6570850:doRandom,[(263,174)(263,244)])
link(onEvent4,6211040:doData,[(277,181)(277,398)])
link(onEvent5,2281954:doSave,[(329,188)(329,405)])
link(onEvent6,2184033:doString,[(406,195)(406,342)])
}
Add(StrList,2281954,427,371)
{
Point(doSave)
link(FileName,15803434:Var2,[(440,339)(342,339)])
}
Add(DoData,6211040,322,392)
{
link(onEventData,2281954:doText,[])
link(Data,9559666:Data1,[(328,158)(27,158)])
}
Add(GetDataEx,15803434,336,294)
{
link(Data,2477111:FString,[])
}
Add(Hub,85823,686,350)
{
OutCount=5
link(onEvent1,9984219:doLoad,[(746,356)(746,377)])
link(onEvent2,13451874:doData,[(746,363)(746,440)])
link(onEvent3,311165:doDelete,[(742,370)(742,503)])
link(onEvent4,592601:doDelete,[(766,377)(766,503)])
}
Add(StrList,9984219,791,336)
{
Point(doSave)
Point(doLoad)
link(FileName,7164910:Var2,[(804,328)(391,328)])
}
Add(GetDataEx,7164910,385,298)
{
link(Data,905766:FString,[])
}
Add(DoData,13451874,791,434)
{
link(onEventData,9559666:onEvent1,[(831,440)(831,27)])
link(Data,9984219:Text,[])
}
Add(FormatStr,2477111,336,238)
{
DataCount=3
Mask="%1cache\%2.json"
Point(FString)
link(onFString,905766:doString,[])
link(Str1,13966239:Var1,[(342,219)])
link(Str2,3059119:Var3,[(349,226)(325,226)(325,282)])
}
Add(Dir,4368278,343,168)
{
}
Add(FormatStr,905766,385,238)
{
DataCount=3
Mask="%1cache\%2.xml"
Point(FString)
link(Str1,13966239:Var3,[(391,219)])
link(Str2,3059119:Var1,[(398,226)(291,226)(291,282)])
}
Add(GetDataEx,3059119,294,277)
{
link(Data,6570850:Random,[])
}
Add(GetDataEx,13966239,343,214)
{
link(Data,4368278:CurrentDir,[])
}
Add(Dir,15926951,70,21)
{
}
Add(DirTools,5174933,350,112)
{
Point(doExists)
link(onOK,12829684:doEvent,[])
link(Source,12626745:Var2,[(356,100)(324,100)(324,219)(293,219)])
}
Add(IndexToChanel,12829684,399,112)
{
link(onEvent1,2453963:doDir,[])
}
Add(StrCat,10115733,287,126)
{
Str2="cache"
link(onStrCat,5174933:doExists,[(335,132)(335,139)])
link(Str1,5580497:Var2,[(293,114)(185,114)(185,138)(76,138)])
}
Add(FileTools,311165,784,483)
{
DelToRecycle=1
link(FileName,15803434:Var1,[(790,391)(333,391)(333,299)])
}
Add(FileTools,592601,833,483)
{
DelToRecycle=1
link(FileName,7164910:Var1,[(839,393)(382,393)(382,303)])
}
Add(Dir,2453963,518,112)
{
Point(Dir)
link(Dir,12626745:Var3,[(524,100)(410,100)(410,166)])
}
Add(GetDataEx,12626745,287,161)
{
link(Data,10115733:Result,[])
}
Add(StrCat,14658533,56,189)
{
link(onStrCat,13516623:doFileExists,[(96,195)(96,216)])
link(Str1,5580497:Var1,[(62,128)])
link(Str2,2962259:Value,[(69,139)(118,139)])
}
Add(GetDataEx,5580497,70,123)
{
link(Data,3456739:Var2,[])
}
Add(Memory,2962259,112,21)
{
Default=String(/Newtonsoft.Json.dll)
}
Add(FileTools,13516623,105,189)
{
link(onEnd,9391747:doEvent,[])
link(FileName,14658533:Result,[(111,177)(87,177)(87,233)(62,233)])
}
Add(IndexToChanel,9391747,147,189)
{
link(onEvent1,14318119:doString,[(191,195)(191,171)(156,171)(156,146)])
link(onEvent2,14852155:doEvent1,[(198,202)(198,160)])
}
Add(Message,7260888,231,70)
{
Caption="Ошибка!"
Icon=3
}
Add(FormatStr,14318119,168,140)
{
DataCount=1
Mask="Необходимый для работы программы файл Newtonsoft.Json.dll не найден в папке\r\n \r\n%1\r\n\r\nДальнейшая работа программы не возможна!\r\nПожалуйста, перезапустите программу!"
link(onFString,7260888:doMessage,[(216,146)(216,76)])
link(Str1,5580497:Var3,[(174,128)])
}
Add(GetDataEx,3456739,70,91)
{
link(Data,15926951:CurrentDir,[])
}
END_SDK

Подскажите, пожалуйста, есть ли более правильный способ выводить информацию в поток, без этого бубна с файлами?
карма: 0

0