Вверх ↑
Этот топик читают: Гость
Ответов: 4630
Рейтинг: 749
#286: 2020-06-09 16:39:57 ЛС | профиль | цитата
flint2, что он делал - он рассказывал на последних 2-х страницах.
карма: 26

0
Ответов: 2059
Рейтинг: 132
#287: 2020-06-09 17:03:10 ЛС | профиль | цитата
Тогда прошу меня извинить!
(Но мне показалось это всё не стройным... Возможно от того, что температура.)

Редактировалось 1 раз(а), последний 2020-06-09 17:09:45
карма: 6

0
Ответов: 107
Рейтинг: 0
#288: 2020-06-09 23:28:51 ЛС | профиль | цитата
Netspirit писал(а):
1) Перебираешь основной список имен файлов.
2) Перед запросом каждое имя сохраняешь в Memory
3) После запроса если произошла ошибка - добавляешь имя в другой список "неудавшихся"
4) По окончании перебора основного списка перекидаешь в него второй список и если там есть файлы - повторяешь перебор основного списка.


Я сделал по другому, но суть таже, я просто данные храню не в памяти, а в текстовике, что бы при непредвиденных обстоятельствах (вылет программы, отключения электричества и тд. и тп) можно было возобновиться, а не начинать с самого начала...

flint2, Я же не просто задаю вопрос и ухожу, может кому то будет интересен и полезен мой опыт и я делюсь им тут. Я задаю вопрос и если нахожу ответ на него сам, путем проб и ошибок и получаю положительный результат, описываю его здесь. Не злитесь на меня, я же хочу как лучше

Редактировалось 1 раз(а), последний 2020-06-09 23:30:50
карма: 0

0
Ответов: 107
Рейтинг: 0
#289: 2020-06-12 21:50:25 ЛС | профиль | цитата
Ребята, может кому пригодится, вот рабочая схема мультипотока для этого компонента. Для примера я покажу на копировании файлов, но в место опирации над файлами можно так же выгружать файлы в инет. Короче сама суть надеюсь будет понятной...

Make(delphi)
ver(4.05 build 186)
Add(MainForm,2953706,21,105)
{
Width=1193
Height=750
}
Add(Button,10739295,301,77)
{
Left=20
Top=515
Width=90
Height=40
Font=[MS Sans Serif,10,1,255,1]
Caption="dobavit"
link(onClick,14632018:doExecute,[])
}
Add(Memo,1083195,441,77)
{
Left=15
Top=15
Width=300
Height=400
}
Add(Memo,530811,693,196)
{
Left=340
Top=15
Width=300
Height=400
}
Add(Memo,13181563,700,539)
{
Left=670
Top=15
Width=300
Height=400
}
Add(ODialog,14632018,364,77)
{
Select=1
link(onExecute,1083195:doAdd,[])
}
Add(ArrayEnum,12584361,455,252)
{
link(onItem,11483881:doEvent1,[])
link(Array,2617444:Var2,[])
}
Add(ArrayEnum,13755750,483,574)
{
link(onItem,14789685:doEvent1,[])
link(Array,5152880:Var,[])
}
Add(FileTools,5090797,574,245)
{
NewFileName="E:\\test\\test.mp4"
link(onEnd,4242509:In,[])
link(FileName,12584361:Item,[(580,233)(522,233)(522,292)(461,292)])
link(NewFileName,5138992:FString,[])
}
Add(FileTools,4839667,595,588)
{
NewFileName="E:\\test\\test2.mp4"
link(onEnd,8162177:In,[])
link(FileName,13755750:Item,[(601,576)(545,576)(545,618)(489,618)])
link(NewFileName,8865822:FString,[])
}
Add(Thread,11334244,357,252)
{
FastStop=0
link(onExec,12584361:doEnum,[])
}
Add(Thread,7073966,357,574)
{
Delay=1300
FastStop=0
link(onExec,13755750:doEnum,[])
}
Add(Button,5944194,161,420)
{
Left=130
Top=515
Width=90
Height=40
Font=[MS Sans Serif,10,1,255,1]
Caption="perenos"
link(onClick,461469:doEvent1,[])
}
Add(Hub,461469,287,420)
{
InCount=3
link(onEvent1,11334244:doStart,[(332,426)(332,258)])
link(onEvent2,7073966:doStart,[(329,433)(329,580)])
}
Add(Hub,11483881,525,252)
{
OutCount=3
link(onEvent1,15645132:doRandom,[(560,258)(560,146)])
link(onEvent2,12126090:doData,[(551,265)(551,289)(450,289)(450,314)])
link(onEvent3,5090797:doCopy,[(557,272)(557,258)])
}
Add(Hub,14789685,546,574)
{
OutCount=3
link(onEvent1,13811772:doRandom,[(584,580)(584,496)])
link(onEvent2,11279074:doData,[(572,587)(572,615)(478,615)(478,643)])
link(onEvent3,4839667:doCopy,[(578,594)(578,601)])
}
Add(FormatStr,5138992,581,196)
{
DataCount=1
Mask="E:\\test\\%1.mp4"
Point(FString)
link(onFString,530811:doAdd,[])
link(Str1,15645132:Random,[])
}
Add(FormatStr,8865822,602,539)
{
DataCount=1
Mask="E:\\test\\%1.mp4"
Point(FString)
link(onFString,13181563:doAdd,[])
link(Str1,13811772:Random,[])
}
Add(DoData,12126090,462,308)
{
link(onEventData,9050316:doWork2,[])
link(Data,12584361:Index,[])
}
Add(DoData,11279074,490,637)
{
link(onEventData,16612372:In,[])
link(Data,13755750:Index,[])
}
Add(HubEx,9050316,502,308)
{
Angle=3
link(onEvent,1083195:doDelete,[(506,248)(429,248)(429,97)])
}
Add(GetDataEx,2617444,455,217)
{
link(Data,1083195:Array,[])
}
Add(LineBreak,16368397,476,231)
{
Type=1
link(Data,2617444:Var3,[(482,222)])
Primary=[5152880,7,308]
}
Add(LineBreak,3548410,518,329)
{
link(Out,9050316:doWork1,[(560,335)(560,314)])
Primary=[16612372,21,308]
}
Add(LineBreak,5732109,238,434)
{
link(Out,461469:doEvent3,[])
Primary=[4242509,378,-189]
}
Add(LineBreak,7072586,210,427)
{
link(Out,461469:doEvent2,[])
Primary=[8162177,427,161]
}
Add(Random,15645132,581,140)
{
Min=1000
Max=10000
link(onRandom,5138992:doString,[(625,146)(625,174)(569,174)(569,202)])
}
Add(Random,13811772,602,490)
{
Min=1000
Max=10000
link(onRandom,8865822:doString,[(646,496)(646,520)(590,520)(590,545)])
}


Редактировалось 3 раз(а), последний 2020-06-13 12:06:35
карма: 0

0
Ответов: 3
Рейтинг: 0
#290: 2020-06-13 18:39:52 ЛС | профиль | цитата
Как посмотреть, какой отправляется запрос (Не тип запроса, POST, GET, и тд, а содержание запроса, как в компоненте HTTP_PostBilder?) с компонента HTTPClient?
карма: 0

0
Ответов: 537
Рейтинг: 14
#291: 2020-06-13 21:55:09 ЛС | профиль | цитата
Программа IEInspector HTTP Analyzer в помощь
карма: 4

0
Ответов: 3
Рейтинг: 0
#292: 2020-06-13 23:20:56 ЛС | профиль | цитата
Sersey писал(а):
IEInspector HTTP Analyzer

Спасибо.
карма: 0

0
Ответов: 107
Рейтинг: 0
#293: 2020-06-13 23:52:27 ЛС | профиль | цитата
Ребята подскажите с проблемой прогресс бара. Я использовал следующую формулу в математическом парсере (делю размер файла в байтах на 1024 и 1024 получаю размер в мегабайтах, тоже саой для отправленных данных, потом делю размер файла на отпраленые данные и умножаю на 100) с файлами до 2 гигов все работает четко, но больше 2 гигов файлы доходят до 55% и прогресс бар обнуляется (хотя файлы грузятся дальше). Как это победить? (Схему кину завтра вечером)

Редактировалось 1 раз(а), последний 2020-06-13 23:59:51
карма: 0

0
Ответов: 3
Рейтинг: 0
#294: 2020-06-14 00:55:47 ЛС | профиль | цитата
А что значит "подготовить с помощью URL-encoding" (Это из описания EncType, HTTPclient'a)? Я не нашел "URL-encoding" в свойствах и точках.
карма: 0

0
Ответов: 207
Рейтинг: 14
#295: 2020-06-14 01:44:03 ЛС | профиль | цитата
germes5558 писал(а):
делю размер файла в байтах на 1024 и 1024 получаю размер в мегабайтах, тоже саой для отправленных данных, потом делю размер файла на отпраленые данные и умножаю на 100

Может я недопонял, но зачем так усложнять?
(100/Фактический размер) * Отправленные данные

Вот и вся формула

Редактировалось 1 раз(а), последний 2020-06-14 01:44:55
карма: 2

0
Ответов: 107
Рейтинг: 0
#296: 2020-06-14 03:03:02 ЛС | профиль | цитата
Joiner,
Тут дело не в формуле, я подключил onUploadProgress поле ввода и посмотрел, что он вообще выдает в значение и после 2 162 024 935 байт начинает работать в другую сторону со знаком - , видимо это не решить никакой формулой...

Joiner писал(а):
Может я недопонял, но зачем так усложнять?

Я уже думал, что может получается сильно большое число и таким образом его уменьшил, но дело не в этом...

Я так понял, что нужно через блок IF поставить что бы отловить минусовое значение и разницу добавлять к результату, пока еще не пойму как это сделать

Дополню: Путем математических вычислений все получилось так как нужно. Если у кого то будет подобная проблема то нужно делать так

Add(MainForm,2953706,21,105)
{
}
Add(Hub,5207038,469,154)
{
OutCount=3
link(onEvent1,6953438:doData,[])
link(onEvent2,6953438:doCompare,[])
link(onEvent3,1800458:In,[])
}
Add(EventFromData,8345170,483,203)
{
}
Add(MathParse,8684502,784,182)
{
MathStr="%1 / %2 * 100"
ResultType=0
link(onResult,3786722:doReplace,[])
link(X1,3720303:Var,[])
link(X2,9238335:Var,[])
}
Add(Replace,3786722,840,182)
{
SubStr="-"
link(onReplace,2918108:doPosition,[])
}
Add(LineBreak,2478442,483,315)
{
Caption="razmer"
Type=1
link(Data,1503023:Var2,[])
Primary=[9238335,308,-161]
}
Add(MultiElementEx,6953438,595,154)
{
}
BEGIN_SDK
Add(EditMultiEx,3284523,21,21)
{
WorkCount=#6:doData|9:doCompare|
VarCount=#3:Var|
Width=944
Height=354
link(doData,407790:doData,[(199,27)(199,146)])
link(doCompare,6564645:doCompare,[(210,34)(210,202)])
link(Var,10321634:Var,[(27,357)(748,357)])
}
Add(EventFromData,407790,378,140)
{
}
Add(If_else,6564645,399,196)
{
Type=3
Op2=String(0)
link(onTrue,12462252:doCalc,[(495,202)(495,216)])
link(onFalse,3220840:doValue,[(447,209)(447,265)])
link(Op1,5974072:Var2,[])
}
Add(FastMathParse,12462252,560,210)
{
MathStr="%1 - %2"
ResultType=0
link(onResult,11660142:doEvent1,[])
link(X1,4435402:Var2,[(566,198)(528,198)])
link(X2,5974072:Var3,[(573,180)])
}
Add(Replace,16332947,658,203)
{
SubStr="-"
link(onReplace,8729091:doData,[])
}
Add(Memory,3220840,462,259)
{
Point(Data)
link(onData,3697408:doWork1,[(569,265)(569,314)])
}
Add(GetDataEx,5974072,399,175)
{
link(Data,407790:GetData,[(405,177)(384,177)])
}
Add(Math,8762234,770,210)
{
link(onResult,9908843:doEvent1,[])
link(Op1,4435402:Var1,[(776,198)(519,198)(519,285)])
link(Op2,8729091:GetData,[(783,198)(755,198)(755,247)(713,247)])
}
Add(GetDataEx,4435402,522,280)
{
Angle=2
link(Data,3220840:Value,[(528,310)(468,310)])
}
Add(Hub,11660142,616,210)
{
link(onEvent1,16332947:doReplace,[(640,216)(640,209)])
link(onEvent2,8762234:doOperation,[(707,223)(707,216)])
}
Add(EventFromData,8729091,707,203)
{
}
Add(GetIndexData,10321634,742,308)
{
link(Data1,4435402:Var3,[(748,285)])
link(Data2,14630307:GetData,[(755,275)(881,275)])
}
Add(ChanelToIndex,3697408,644,308)
{
link(onIndex,10321634:doIndex,[])
}
Add(Hub,9908843,819,210)
{
link(onEvent1,14630307:doData,[])
link(onEvent2,3697408:doWork2,[(845,223)(845,272)(632,272)(632,321)])
}
Add(EventFromData,14630307,875,210)
{
}
END_SDK
Add(LineBreak,12056813,595,203)
{
Caption="Progress"
Type=1
link(Data,6953438:Var,[])
Primary=[3720303,189,-77]
}
Add(LineBreak,14972968,728,182)
{
link(Out,8684502:doCalc,[])
Primary=[1800458,-231,-14]
}
Add(MathParse,233486,672,273)
{
DataCount=1
MathStr="%1 / 1024 / 1024"
ResultType=0
link(onResult,2980900:doString,[])
link(X1,1503023:Var3,[(678,261)(585,261)(585,278)])
}
Add(Hub,9013864,455,203)
{
link(onEvent1,8345170:doData,[])
link(onEvent2,233486:doCalc,[(571,216)(571,279)])
}
Add(GetDataEx,1503023,483,273)
{
link(Data,8345170:GetData,[])
}
Add(FormatStr,2980900,749,273)
{
DataCount=1
Mask="%1 MB"
link(onFString,14724804:doValue,[])
link(Str1,233486:Result,[(755,261)(717,261)(717,317)(678,317)])
}
Add(GlobalVar,6130403,343,154)
{
Name="onUploadProgress"
link(onValue,5207038:doEvent1,[])
}
Add(GlobalVar,272751,364,203)
{
Name="FullFileSize"
link(onValue,9013864:doEvent1,[])
}
Add(GlobalVar,14724804,833,273)
{
Name="Razmer fila v MB"
}
Add(ProgressBarRush,2918108,910,182)
{
Left=910
Top=180
}


Редактировалось 4 раз(а), последний 2020-06-14 15:57:31
карма: 0

0
Ответов: 4630
Рейтинг: 749
#297: 2020-06-15 11:46:21 ЛС | профиль | цитата
Nurlin писал(а):
Я не нашел "URL-encoding" в свойствах и точках.
Компонент Charset, свойство Type=ANSI_URL.
germes5558 писал(а):
Я уже думал, что может получается сильно большое число
Да, поэтому. Точнее - слишком большое целое число. Прогресс бар больше 2 Гб не отобразит. В таком случае на прогресс нужно выводить в %. Или если после "делю размер файла в байтах на 1024 и 1024 получаю размер в мегабайтах" ничего не делать и подавать на прогресс - тоже подойдёт.
germes5558 писал(а):
Я так понял, что нужно через блок IF поставить что бы отловить минусовое значение и разницу добавлять к результату, пока еще не пойму как это сделать
Достаточно в компонентах математики поставить ResultType=Real
карма: 26

0
Ответов: 107
Рейтинг: 0
#298: 2020-06-15 21:52:08 ЛС | профиль | цитата
Netspirit, Спасибо!

А есть возможность как то обойти ограничение 4Гб для загрузки?
карма: 0

0
Ответов: 4630
Рейтинг: 749
#299: 2020-06-16 11:46:41 ЛС | профиль | цитата
Нужно в коде немного поправить. Не думал что будет такая необходимость.
карма: 26

0
Ответов: 107
Рейтинг: 0
#300: 2020-06-16 11:57:11 ЛС | профиль | цитата
Netspirit писал(а):
Нужно в коде немного поправить. Не думал что будет такая необходимость.

Если не тяжело и будет лишняя минута, сделай пожалуйста. Буду очень благодарен!
карма: 0

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