Вверх ↑
Этот топик читают: Гость
Ответов: 98
Рейтинг: 1
#1: 2024-03-28 13:28:24 ЛС | профиль | цитата
Всех приветствую, кто еще здесь "живой".

Пытаюсь совладать с компонентом, но что-то непонятно - то ли баг, то ли лыжи у меня не едут).
Суть в чем: записываю данные stream в него по очереди друг-за-другом как в примере с fileSream (там работает). Но вместо этого он выдает последнее значение, которое отправлял в него.
Так же пробовал записывать через нижнюю точку с компонентом datatofile - ничего по сути не меняется, так же пишется одно значение.
Цель: отправка больших файлов по протоколу обмена.
Add(MainForm,2953706,21,105)
{
Width=781
Height=766
link(onCreate,8445126:doEnum,[(186,125)(186,244)])
}
Add(StreamConvertor,13064255,637,385)
{
Mode=7
Point(Data)
link(onResult,152839:doCopy,[])
}
Add(StrList,12203004,210,182)
{
Strings=#1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|2:10|
}
Add(ArrayEnum,8445126,203,238)
{
link(onItem,15462239:doWork2,[(405,244)(405,391)])
link(onEndEnum,5892764:doEvent1,[(506,251)(506,587)])
link(Array,12203004:Array,[(209,222)(230,222)])
}
Add(HilightMemo,15702289,1064,581)
{
Left=10
Top=50
Width=535
Height=305
Font=[Courier New,8,0,0,1]
HilightFont=[Courier New,8,0,0,1]
}
Add(MemoryStream,152839,875,385)
{
Point(doPosition)
link(onCopy,6140833:doData,[(920,391)(920,421)(772,421)(772,447)])
}
Add(StreamConvertor,3525565,980,581)
{
Mode=6
Point(Data)
link(onResult,15702289:doAdd,[])
link(Data,152839:Stream,[(986,551)(881,551)])
}
Add(DoData,6140833,784,441)
{
link(onEventData,668166:doWork2,[])
link(Data,152839:Size,[(790,429)(888,429)])
}
Add(Hub,5892764,777,581)
{
InCount=2
link(onEvent1,668166:doWork3,[(846,587)])
link(onEvent2,3525565:doConvert,[(885,594)(885,587)])
}
Add(HubEx,668166,842,441)
{
Angle=3
link(onEvent,152839:doPosition,[(846,405)])
}
Add(Edit,6685564,700,532)
{
Left=615
Top=85
Width=125
Text="0"
}
Add(Button,13158589,616,609)
{
Left=635
Top=120
Caption="pos"
link(onClick,16701640:doData,[])
}
Add(DoData,16701640,700,609)
{
link(onEventData,5892764:doEvent2,[(754,615)(754,594)])
link(Data,6685564:Text,[])
}
Add(Button,5195217,371,399)
{
Left=635
Top=230
Caption="data"
link(onClick,9410126:doData,[])
}
Add(Edit,11093793,490,329)
{
Left=620
Top=200
Width=125
Text="test"
}
Add(DoData,9410126,497,399)
{
link(onEventData,15462239:doWork3,[(534,405)(534,403)(578,403)])
link(Data,11093793:Text,[(503,380)(496,380)])
}
Add(HubEx,15462239,574,385)
{
link(onEvent,13064255:doConvert,[])
}


Оказалось, что в docopy выполняется сброс size "P.Size := 0;" и при инициализации схемы нужно только обнулить (имхо) для правильного счета байт.

Редактировалось 12 раз(а), последний 2024-03-29 08:14:07
карма: 0

0
Ответов: 787
Рейтинг: 168
#2: 2024-03-28 15:46:17 ЛС | профиль | цитата
strannik_nebes писал(а):
Цель: отправка больших файлов по протоколу обмена.

Для отправки больших файлов, по моему, нужно использовать SharedStream.
Вот набрасал небольшой пример. Можно передать файлы более гигабайта...

Сервер

Add(MainForm,11176470,280,70)
{
Left=20
Top=105
Width=380
Height=161
Caption="Receive big file"
Position=1
Point(onClose)
link(onClose,11727965:doWork2,[])
}
Add(TCP_Server,37674,357,126)
{
Port=130
DataType=3
Point(onError)
Point(onProgress)
link(onRead,12923094:doSeparateMT,[])
link(onConnect,7080087:doEvent1,[(403,139)(403,300)])
link(onDisconnect,7231487:doEvent1,[(410,146)(410,265)])
}
Add(SharedStream,4764602,700,133)
{
CoreName="dsa"
PageMem=160
Mode=1
Point(FileSize)
link(onOpen,3538368:doCopy,[])
link(FileName,2178470:Result,[(706,124)(692,124)(692,173)(636,173)])
link(Offset,5706248:Offset,[(720,117)(685,117)(685,180)(496,180)])
link(Size,5706248:SizeMMF,[(727,124)(741,124)(741,194)(489,194)])
}
Add(StreamCopy,3538368,777,133)
{
link(onCopy,1565907:doWork1,[(851,139)(851,293)])
link(Dest,4764602:Stream,[(783,124)(769,124)(769,173)(706,173)])
link(Source,5706248:Filepart,[(790,122)(818,122)(818,202)(482,202)])
}
Add(StreamUnPack,5706248,469,126)
{
DataCount=#8:FileName|8:Filepart|7:SizeMMF|6:Offset|8:FileSize|
link(onUnPack,11056289:doCompare,[])
}
Add(MT_MultiData,12923094,420,126)
{
Count=1
link(onData1,5706248:doUnPack,[])
}
Add(LED,10294395,455,280)
{
Left=315
Top=85
}
Add(Hub,7231487,420,259)
{
OutCount=3
link(onEvent1,4764602:doClose,[(669,265)(669,153)])
link(onEvent2,1565907:doWork3,[(494,272)(494,307)])
link(onEvent3,10294395:doOff,[(445,279)(445,293)])
}
Add(Label,7626178,959,273)
{
Left=95
Top=90
Width=130
Height=20
Caption=""
}
Add(StrCatDelim,2178470,630,133)
{
Delimiter="\"
link(onStrCatDlm,4764602:doOpen,[])
link(Str1,9721491:Text,[(636,110)(349,110)(349,187)(188,187)])
link(Str2,5706248:FileName,[(643,124)(622,124)(622,173)(475,173)])
}
Add(Label,16191510,119,231)
{
Left=15
Top=15
Width=240
Caption="Укажите папку для принятых файлов"
}
Add(Edit,9721491,182,140)
{
Left=5
Top=35
Width=325
Text=""
ClearAfterEnter=1
link(onChange,4281014:doExists,[])
}
Add(Button,15010227,98,140)
{
Left=335
Top=35
Width=20
Font=[MS Sans Serif,8,1,0,1]
Cursor=2
TabOrder=-1
Caption="..."
Data=Integer(6)
link(onClick,15313214:doBrowse,[])
}
Add(Browse,15313214,140,140)
{
NewStyle=0
link(onBrowse,9721491:doText,[])
}
Add(DirTools,4281014,231,119)
{
Point(doExists)
link(onOK,14169860:doEvent,[])
}
Add(IndexToChanel,14169860,280,119)
{
link(onEvent1,10555517:doWork2,[])
link(onEvent2,37674:doOpen,[])
}
Add(If_else,11056289,525,126)
{
Type=3
link(onTrue,6107069:doEvent1,[(564,132)(564,125)])
link(onFalse,2178470:doStrCatDlm,[])
link(Op1,5706248:FileSize,[(531,117)(517,117)(517,166)(503,166)])
link(Op2,4764602:FileSize,[(538,117)(573,117)(573,187)(727,187)])
}
Add(Hub,6107069,581,119)
{
link(onEvent1,11727965:doWork3,[(606,125)(606,97)])
link(onEvent2,1565907:doWork2,[(606,132)(606,300)])
}
Add(ChanelToIndex,1565907,861,287)
{
Count=4
link(onIndex,14016326:doGetString,[])
}
Add(StrList,14016326,910,259)
{
Strings=#14:Приём файла...|11:Файл принят|17:Клиент отключился|17:Ожидание передачи|0:|0:|
Point(doGetString)
Point(onGetIndex)
Point(onGetString)
link(onGetString,7626178:doText,[])
}
Add(Hub,7080087,413,294)
{
link(onEvent1,10294395:doOn,[])
link(onEvent2,1565907:doWork4,[(445,307)(445,314)])
}
Add(HubEx,11727965,328,91)
{
Angle=1
link(onEvent,10555517:doWork1,[])
}
Add(HubEx,10555517,328,119)
{
Angle=1
link(onEvent,37674:doClose,[(332,139)])
}


Клиент

Add(MainForm,11176470,560,280)
{
Left=20
Top=105
Width=377
Height=134
Caption="Send big file"
Position=1
Point(onClose)
link(onClose,9043421:doWork2,[(620,307)(620,314)])
}
Add(ODialog,1786215,273,70)
{
link(onExecute,9721491:doText,[])
}
Add(SharedStream,12437222,399,70)
{
CoreName="asd"
PageMem=160
Point(FileOffset)
Point(CountFileBlock)
Point(FileSize)
link(onOpen,15201884:doFor,[])
link(Offset,10512455:Result,[(419,61)(447,61)(447,138)(664,138)])
}
Add(Edit,9721491,322,70)
{
Top=65
Width=325
Text=""
ClearAfterEnter=1
link(onChange,12437222:doOpen,[])
}
Add(Button,15010227,189,63)
{
Left=330
Top=65
Width=20
Font=[MS Sans Serif,8,1,0,1]
Cursor=2
TabOrder=-1
Caption="..."
Data=Integer(6)
link(onClick,7649023:doEvent1,[])
}
Add(For,15201884,483,70)
{
link(onEvent,639348:doEvent1,[])
link(onStop,12437222:doClose,[(522,83)(522,55)(382,55)(382,90)])
link(End,12437222:CountFileBlock,[(496,61)(475,61)(475,110)(433,110)])
}
Add(EventFromData,12814098,273,266)
{
link(onEvent,3731920:doPart,[])
}
Add(TCP_Client,52372,644,301)
{
Port=130
IP="127.0.0.1"
DataType=3
Point(onError)
Point(onProgress)
link(onConnect,10294395:doOn,[(683,314)(683,328)])
link(onDisconnect,10294395:doOff,[])
}
Add(Hub,639348,539,70)
{
link(onEvent1,8314133:doPack,[(564,76)(564,118)(389,118)(389,321)])
link(onEvent2,10512455:doOperation,[])
}
Add(StreamPack,8314133,399,315)
{
DataCount=#8:FileName|8:Filepart|7:SizeMMF|6:Offset|8:FileSize|
link(onPack,52372:doSend,[])
link(FileName,12814098:GetData,[(405,306)(279,306)])
link(Filepart,12437222:Stream,[(412,243)(405,243)])
link(SizeMMF,9575546:Var2,[])
link(Offset,13961555:Var2,[])
link(FileSize,12437222:FileSize,[(433,138)(440,138)])
}
Add(GetDataEx,13961555,420,126)
{
link(Data,12437222:FileOffset,[])
}
Add(FilePartElm,3731920,322,266)
{
link(onPart,12814098:doData,[(361,272)(361,258)(263,258)(263,272)])
link(FileName,9721491:Text,[])
}
Add(Hub,7649023,238,63)
{
link(onEvent1,10512455:doClear,[(263,69)(263,41)(571,41)(571,90)])
link(onEvent2,1786215:doExecute,[])
}
Add(GetDataEx,9575546,413,119)
{
link(Data,12437222:SizeMMF,[])
}
Add(Math,10512455,658,77)
{
ResultType=0
Point(doClear)
link(onResult,12437222:doRemapping,[(697,83)(697,48)(389,48)(389,83)])
link(Op1,13961555:Var3,[(664,68)(650,68)(650,131)])
link(Op2,9575546:Var3,[(671,61)(643,61)(643,124)])
}
Add(LED,10294395,700,308)
{
Left=200
Top=10
}
Add(Label,12900334,63,21)
{
Left=10
Top=35
Width=202
Height=17
Caption="Выбрать файл для отправки на сервер"
}
Add(Button,3343666,504,238)
{
Left=5
Top=10
Width=170
Caption="Соединидся с с сервером"
Point(doCaption)
link(onClick,3761722:doSwitch,[])
}
Add(Switch,3761722,560,238)
{
DataOn=String(Отключится)
DataOff=String(Подключится)
Point(onOn)
Point(onOff)
link(onSwitch,3343666:doCaption,[(599,244)(599,230)(494,230)(494,244)])
link(onOn,52372:doOpen,[(634,251)(634,307)])
link(onOff,9043421:doWork1,[(627,258)])
}
Add(HubEx,9043421,623,308)
{
link(onEvent,52372:doClose,[])
}

карма: 15

0
Ответов: 98
Рейтинг: 1
#3: 2024-03-28 16:04:07 ЛС | профиль | цитата
Для отправки больших файлов, по моему, нужно использовать SharedStream.
Вот набрасал небольшой пример. Можно передать файлы более гигабайта...

Спасибо тебе добрый человек за помощь. Буду тестировать. Мой способ только для мелких файлов годится, как оказалось.

--- Добавлено в 2024-03-28 16:46:18

После приема файла, надпись висит "прием файла". Объем данных приходит правильно

Редактировалось 3 раз(а), последний 2024-03-28 16:54:11
карма: 0

0
Ответов: 787
Рейтинг: 168
#4: 2024-03-28 17:47:18 ЛС | профиль | цитата
strannik_nebes писал(а):
После приема файла, надпись висит "прием файла". Объем данных приходит правильно

Поправил Клиент

Add(MainForm,11176470,560,280)
{
Left=20
Top=105
Width=377
Height=134
Caption="Send big file"
Position=1
Point(onClose)
link(onClose,9043421:doWork2,[(620,307)(620,314)])
}
Add(ODialog,1786215,273,70)
{
link(onExecute,9721491:doText,[])
}
Add(SharedStream,12437222,399,70)
{
CoreName="asd"
PageMem=160
Point(FileOffset)
Point(CountFileBlock)
Point(FileSize)
link(onOpen,15394481:doOperation,[])
link(Offset,10512455:Result,[(419,61)(447,61)(447,138)(713,138)])
}
Add(Edit,9721491,322,70)
{
Top=65
Width=325
Text=""
ClearAfterEnter=1
link(onChange,12437222:doOpen,[])
}
Add(Button,15010227,189,63)
{
Left=330
Top=65
Width=20
Font=[MS Sans Serif,8,1,0,1]
Cursor=2
TabOrder=-1
Caption="..."
Data=Integer(6)
link(onClick,7649023:doEvent1,[])
}
Add(For,15201884,532,70)
{
link(onEvent,639348:doEvent1,[])
link(onStop,12437222:doClose,[(571,83)(571,55)(382,55)(382,90)])
link(End,15394481:Result,[(545,61)(524,61)(524,110)(482,110)])
}
Add(EventFromData,12814098,273,266)
{
link(onEvent,3731920:doPart,[])
}
Add(TCP_Client,52372,644,301)
{
Port=130
IP="127.0.0.1"
DataType=3
Point(onError)
Point(onProgress)
link(onConnect,10294395:doOn,[(683,314)(683,328)])
link(onDisconnect,10294395:doOff,[])
}
Add(Hub,639348,588,70)
{
link(onEvent1,8314133:doPack,[(613,76)(613,118)(389,118)(389,321)])
link(onEvent2,10512455:doOperation,[])
}
Add(StreamPack,8314133,399,315)
{
DataCount=#8:FileName|8:Filepart|7:SizeMMF|6:Offset|8:FileSize|
link(onPack,52372:doSend,[])
link(FileName,12814098:GetData,[(405,306)(279,306)])
link(Filepart,12437222:Stream,[(412,243)(405,243)])
link(SizeMMF,9575546:Var2,[])
link(Offset,13961555:Var2,[])
link(FileSize,12437222:FileSize,[(433,138)(440,138)])
}
Add(GetDataEx,13961555,420,126)
{
link(Data,12437222:FileOffset,[])
}
Add(FilePartElm,3731920,322,266)
{
link(onPart,12814098:doData,[(361,272)(361,258)(263,258)(263,272)])
link(FileName,9721491:Text,[])
}
Add(Hub,7649023,238,63)
{
link(onEvent1,10512455:doClear,[(263,69)(263,41)(571,41)(571,90)])
link(onEvent2,1786215:doExecute,[])
}
Add(GetDataEx,9575546,413,119)
{
link(Data,12437222:SizeMMF,[])
}
Add(Math,10512455,707,77)
{
ResultType=0
Point(doClear)
link(onResult,12437222:doRemapping,[(746,83)(746,48)(389,48)(389,83)])
link(Op1,13961555:Var3,[(713,68)(650,68)(650,131)])
link(Op2,9575546:Var3,[(720,61)(643,61)(643,124)])
}
Add(LED,10294395,700,308)
{
Left=200
Top=10
}
Add(Label,12900334,63,21)
{
Left=10
Top=35
Width=202
Height=17
Caption="Выбрать файл для отправки на сервер"
}
Add(Button,3343666,504,238)
{
Left=5
Top=10
Width=170
Caption="Соединидся с с сервером"
Point(doCaption)
link(onClick,3761722:doSwitch,[])
}
Add(Switch,3761722,560,238)
{
DataOn=String(Отключится)
DataOff=String(Подключится)
Point(onOn)
Point(onOff)
link(onSwitch,3343666:doCaption,[(599,244)(599,230)(494,230)(494,244)])
link(onOn,52372:doOpen,[(634,251)(634,307)])
link(onOff,9043421:doWork1,[(627,258)])
}
Add(HubEx,9043421,623,308)
{
link(onEvent,52372:doClose,[])
}
Add(Math,15394481,476,70)
{
Op2=1
link(onResult,15201884:doFor,[])
link(Op1,12437222:CountFileBlock,[(482,61)(468,61)(468,110)(433,110)])
}

карма: 15

0
Ответов: 98
Рейтинг: 1
#5: 2024-03-29 09:38:56 ЛС | профиль | цитата
Пытаюсь понять как работает упаковщик в поток и делаю вывод, что даже примеры упаковки в файл и распаковки из программы также не работают. Набросал пример без сохранения в файл. Результат тот же
Add(StreamPack,10340199,441,329)
{
DataCount=#4:text|6:number|
link(onPack,14221321:doUnPack,[])
link(text,6375422:Text,[(447,282)(426,282)])
link(number,4223354:Position,[(454,282)(489,282)])
}
Add(Button,5140504,385,329)
{
Left=310
Top=95
Caption="Save"
link(onClick,10340199:doPack,[])
}
Add(Label,12358209,420,154)
{
Left=45
Top=12
Width=54
Height=17
Caption="Text value"
}
Add(Label,3999125,481,154)
{
Left=45
Top=40
Width=66
Height=17
Caption="Integer value"
}
Add(Edit,6375422,420,203)
{
Left=125
Top=10
Width=170
}
Add(TrackBar,4223354,483,203)
{
Left=125
Top=35
Width=170
Height=20
Max=20
link(onPosition,9753892:doText,[])
}
Add(Label,9753892,532,203)
{
Left=305
Top=40
Width=10
Height=17
Caption="0"
}
Add(DoData,1776441,868,378)
{
link(onEventData,10998011:doPosition,[])
link(Data,14221321:number,[(874,370)(776,370)])
}
Add(Label,14579262,868,280)
{
Left=360
Top=12
Width=54
Height=17
Caption="Text value"
}
Add(Label,6159879,929,280)
{
Left=360
Top=40
Width=66
Height=17
Caption="Integer value"
}
Add(Edit,11385015,868,329)
{
Left=440
Top=10
Width=170
link(Str,14221321:text,[(874,317)(822,317)(822,373)(769,373)])
}
Add(TrackBar,10998011,924,378)
{
Left=440
Top=35
Width=170
Height=20
Max=20
link(onPosition,7919733:doText,[])
}
Add(Label,7919733,973,378)
{
Left=620
Top=40
Width=10
Height=17
Caption="0"
}
Add(StreamUnPack,14221321,763,329)
{
DataCount=#4:text|6:number|
link(onUnPack,9914869:doEvent1,[])
}
Add(Hub,9914869,819,329)
{
link(onEvent1,11385015:doText,[])
link(onEvent2,1776441:doData,[(851,342)(851,384)])
}


Нашел похожую тему https://forum.hiasm.com/topic/54259. Там также схема не работает, но предлагается использовать компоненты из раздела "типы" (ограничение файла 30 МБ)...

Редактировалось 6 раз(а), последний 2024-03-29 11:41:59
карма: 0

0
Ответов: 787
Рейтинг: 168
#6: 2024-03-29 11:43:54 ЛС | профиль | цитата
strannik_nebes писал(а):
Пытаюсь понять как работает упаковщик в поток и делаю вывод, что даже примеры упаковки в файл и распаковки из программы также не работают


Add(MainForm,2953706,21,105)
{
Width=788
Height=199
}
Add(StreamPack,10340199,245,301)
{
DataCount=#4:text|6:number|
link(onPack,1788851:doCompress,[])
link(text,6375422:Text,[(251,254)(230,254)])
link(number,4223354:Position,[(258,254)(293,254)])
}
Add(Button,5140504,189,301)
{
Left=310
Top=95
Caption="Save"
link(onClick,10340199:doPack,[])
}
Add(Label,12358209,224,126)
{
Left=45
Top=12
Width=54
Height=17
Caption="Text value"
}
Add(Label,3999125,285,126)
{
Left=45
Top=40
Width=66
Height=17
Caption="Integer value"
}
Add(Edit,6375422,224,175)
{
Left=125
Top=10
Width=170
}
Add(TrackBar,4223354,287,175)
{
Left=125
Top=35
Width=170
Height=20
Max=20
link(onPosition,9753892:doText,[])
}
Add(Label,9753892,336,175)
{
Left=305
Top=40
Width=10
Height=17
Caption="0"
}
Add(DoData,1776441,763,343)
{
link(onEventData,10998011:doPosition,[])
link(Data,14221321:number,[(769,334)(643,334)])
}
Add(Label,14579262,735,245)
{
Left=360
Top=12
Width=54
Height=17
Caption="Text value"
}
Add(Label,6159879,796,245)
{
Left=360
Top=40
Width=66
Height=17
Caption="Integer value"
}
Add(Edit,11385015,763,294)
{
Left=440
Top=10
Width=170
link(Str,14221321:text,[(769,285)(706,285)(706,341)(636,341)])
}
Add(TrackBar,10998011,819,343)
{
Left=440
Top=35
Width=170
Height=20
Max=20
link(onPosition,7919733:doText,[])
}
Add(Label,7919733,868,343)
{
Left=620
Top=40
Width=10
Height=17
Caption="0"
}
Add(StreamUnPack,14221321,630,294)
{
DataCount=#4:text|6:number|
link(onUnPack,9914869:doEvent1,[])
}
Add(Hub,9914869,714,294)
{
link(onEvent1,11385015:doText,[])
link(onEvent2,1776441:doData,[(746,307)(746,349)])
}
Add(ZLIB,1788851,315,301)
{
link(onStream,1530552:doDeCompress,[])
}
Add(ZLIB,1530552,574,294)
{
link(onStream,14221321:doUnPack,[])
}

карма: 15

1
Голосовали:strannik_nebes
Ответов: 98
Рейтинг: 1
#7: 2024-03-29 15:51:55 ЛС | профиль | цитата
Поправил Клиент


Файлы не сходятся по кэш-сумме. 20 с лишним пробелов откуда-то берется. Пока не нашел где

Редактировалось 1 раз(а), последний 2024-03-29 15:52:16
карма: 0

0
Ответов: 787
Рейтинг: 168
#8: 2024-03-29 16:42:53 ЛС | профиль | цитата
strannik_nebes писал(а):
Файлы не сходятся по кэш-сумме. 20 с лишним пробелов откуда-то берется

Сервер

Add(MainForm,11176470,280,70)
{
Left=20
Top=105
Width=380
Height=161
Caption="Receive big file"
Position=1
Point(onClose)
link(onClose,11727965:doWork2,[])
}
Add(TCP_Server,37674,357,126)
{
Port=130
DataType=3
Point(onError)
Point(onProgress)
link(onRead,12923094:doSeparateMT,[])
link(onConnect,7080087:doEvent1,[(403,139)(403,300)])
link(onDisconnect,7231487:doEvent1,[(410,146)(410,265)])
}
Add(SharedStream,4764602,623,126)
{
CoreName="dsa"
PageMem=160
Mode=1
Point(FileSize)
link(onOpen,3538368:doCopy,[])
link(FileName,2178470:Result,[(629,117)(580,117)(580,166)(538,166)])
link(Offset,5706248:Offset,[(643,110)(573,110)(573,180)(496,180)])
link(Size,5706248:SizeMMF,[(650,117)(664,117)(664,187)(489,187)])
}
Add(StreamCopy,3538368,700,126)
{
link(onCopy,11056289:doCompare,[])
link(Dest,4764602:Stream,[(706,110)(685,110)(685,166)(629,166)])
link(Source,5706248:Filepart,[(713,117)(692,117)(692,194)(482,194)])
}
Add(StreamUnPack,5706248,469,126)
{
DataCount=#8:FileName|8:Filepart|7:SizeMMF|6:Offset|8:FileSize|
link(onUnPack,2178470:doStrCatDlm,[])
}
Add(MT_MultiData,12923094,420,126)
{
Count=1
link(onData1,5706248:doUnPack,[])
}
Add(LED,10294395,455,280)
{
Left=315
Top=85
}
Add(Hub,7231487,420,259)
{
OutCount=3
link(onEvent1,4764602:doClose,[(585,265)(585,146)])
link(onEvent2,1565907:doWork3,[(494,272)(494,307)])
link(onEvent3,10294395:doOff,[(445,279)(445,293)])
}
Add(Label,7626178,959,273)
{
Left=95
Top=90
Width=130
Height=20
Caption=""
}
Add(StrCatDelim,2178470,532,126)
{
Delimiter="\"
link(onStrCatDlm,4764602:doOpen,[])
link(Str1,9721491:Text,[(538,117)(349,117)(349,180)(188,180)])
link(Str2,5706248:FileName,[(545,110)(461,110)(461,166)(475,166)])
}
Add(Label,16191510,119,231)
{
Left=15
Top=15
Width=240
Caption="Укажите папку для принятых файлов"
}
Add(Edit,9721491,182,140)
{
Left=5
Top=35
Width=325
Text=""
ClearAfterEnter=1
link(onChange,4281014:doExists,[])
}
Add(Button,15010227,98,140)
{
Left=335
Top=35
Width=20
Font=[MS Sans Serif,8,1,0,1]
Cursor=2
TabOrder=-1
Caption="..."
Data=Integer(6)
link(onClick,15313214:doBrowse,[])
}
Add(Browse,15313214,140,140)
{
NewStyle=0
link(onBrowse,9721491:doText,[])
}
Add(DirTools,4281014,231,119)
{
Point(doExists)
link(onOK,14169860:doEvent,[])
}
Add(IndexToChanel,14169860,280,119)
{
link(onEvent1,10555517:doWork2,[])
link(onEvent2,37674:doOpen,[])
}
Add(If_else,11056289,763,126)
{
Type=3
link(onTrue,6107069:doEvent1,[])
link(onFalse,1565907:doWork1,[(809,139)(809,293)])
link(Op1,5706248:FileSize,[(769,103)(524,103)(524,166)(503,166)])
link(Op2,4764602:FileSize,[(776,117)(755,117)(755,173)(650,173)])
}
Add(Hub,6107069,819,126)
{
link(onEvent1,11727965:doWork3,[(844,132)(844,97)])
link(onEvent2,1565907:doWork2,[(844,139)(844,300)])
}
Add(ChanelToIndex,1565907,861,287)
{
Count=4
link(onIndex,14016326:doGetString,[])
}
Add(StrList,14016326,910,259)
{
Strings=#14:Приём файла...|11:Файл принят|17:Клиент отключился|17:Ожидание передачи|0:|0:|
Point(doGetString)
Point(onGetIndex)
Point(onGetString)
link(onGetString,7626178:doText,[])
}
Add(Hub,7080087,413,294)
{
link(onEvent1,10294395:doOn,[])
link(onEvent2,1565907:doWork4,[(445,307)(445,314)])
}
Add(HubEx,11727965,328,91)
{
Angle=1
link(onEvent,10555517:doWork1,[])
}
Add(HubEx,10555517,328,119)
{
Angle=1
link(onEvent,37674:doClose,[(332,139)])
}


Клиент

Add(MainForm,11176470,560,238)
{
Left=20
Top=105
Width=377
Height=134
Caption="Send big file"
Position=1
Point(onClose)
link(onClose,9043421:doWork2,[(620,265)(620,272)])
}
Add(ODialog,1786215,273,70)
{
link(onExecute,9721491:doText,[])
}
Add(SharedStream,12437222,399,70)
{
CoreName="asd"
PageMem=160
Point(FileOffset)
Point(CountFileBlock)
Point(FileSize)
link(onOpen,15201884:doFor,[])
link(Offset,10512455:Result,[(419,61)(447,61)(447,138)(629,138)])
}
Add(Edit,9721491,322,70)
{
Top=65
Width=325
Text=""
ClearAfterEnter=1
link(onChange,12437222:doOpen,[])
}
Add(Button,15010227,189,63)
{
Left=330
Top=65
Width=20
Font=[MS Sans Serif,8,1,0,1]
Cursor=2
TabOrder=-1
Caption="..."
Data=Integer(6)
link(onClick,7649023:doEvent1,[])
}
Add(For,15201884,483,70)
{
link(onEvent,639348:doEvent1,[])
link(onStop,12437222:doClose,[(522,83)(522,55)(382,55)(382,90)])
link(End,12437222:CountFileBlock,[(496,61)(475,61)(475,110)(433,110)])
}
Add(EventFromData,12814098,273,224)
{
link(onEvent,3731920:doPart,[])
}
Add(TCP_Client,52372,644,259)
{
Port=130
IP="127.0.0.1"
DataType=3
Point(onError)
Point(onProgress)
link(onConnect,10294395:doOn,[(683,272)(683,286)])
link(onDisconnect,10294395:doOff,[])
}
Add(Hub,639348,574,70)
{
link(onEvent1,8314133:doPack,[(599,76)(599,146)(389,146)(389,279)])
link(onEvent2,10512455:doOperation,[])
}
Add(StreamPack,8314133,399,273)
{
DataCount=#8:FileName|8:Filepart|7:SizeMMF|6:Offset|8:FileSize|
link(onPack,52372:doSend,[])
link(FileName,12814098:GetData,[(405,264)(279,264)])
link(Filepart,12437222:Stream,[(412,243)(405,243)])
link(SizeMMF,9575546:Var2,[])
link(Offset,13961555:Var2,[])
link(FileSize,12437222:FileSize,[(433,138)(440,138)])
}
Add(GetDataEx,13961555,420,126)
{
link(Data,12437222:FileOffset,[])
}
Add(FilePartElm,3731920,322,224)
{
link(onPart,12814098:doData,[(361,230)(361,216)(263,216)(263,230)])
link(FileName,9721491:Text,[])
}
Add(Hub,7649023,238,63)
{
link(onEvent1,10512455:doClear,[(263,69)(263,41)(620,41)(620,90)])
link(onEvent2,1786215:doExecute,[])
}
Add(GetDataEx,9575546,413,119)
{
link(Data,12437222:SizeMMF,[])
}
Add(Math,10512455,623,77)
{
ResultType=0
Point(doClear)
link(onResult,12437222:doRemapping,[(662,83)(662,48)(389,48)(389,83)])
link(Op1,13961555:Var3,[(629,68)(615,68)(615,131)])
link(Op2,9575546:Var3,[(636,61)(566,61)(566,124)])
}
Add(LED,10294395,700,266)
{
Left=200
Top=10
}
Add(Label,12900334,63,21)
{
Left=10
Top=35
Width=202
Height=17
Caption="Выбрать файл для отправки на сервер"
}
Add(Button,3343666,504,196)
{
Left=5
Top=10
Width=170
Caption="Соединидся с с сервером"
Point(doCaption)
link(onClick,3761722:doSwitch,[])
}
Add(Switch,3761722,560,196)
{
DataOn=String(Отключится)
DataOff=String(Подключится)
Point(onOn)
Point(onOff)
link(onSwitch,3343666:doCaption,[(599,202)(599,188)(494,188)(494,202)])
link(onOn,52372:doOpen,[(634,209)(634,265)])
link(onOff,9043421:doWork1,[(627,216)])
}
Add(HubEx,9043421,623,266)
{
link(onEvent,52372:doClose,[])
}

карма: 15

0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)