Size: a a a

2020 April 10

АВ

Александр В in Delphi & Lazarus
в том, чтобы отобразить прогресс обработки большого объема чего либо. ЗАгрузка данных, справочников, etc.
источник

SB

Sergey Bodrov in Delphi & Lazarus
TDataExporterWorker = class(TThread)
 protected
   FOnExecute: TNotifyEvent;
   procedure Execute(); override;
 public
   property OnExecute: TNotifyEvent read FOnExecute write FOnExecute;
 end;

procedure TDataExporterWorker.Execute;
begin
 if not Terminated then
 begin
   if Assigned(OnExecute) then OnExecute(Self);
   Terminate();
 end;
end;
источник

VA

Viktor Akselrod in Delphi & Lazarus
Александр В
в том, чтобы отобразить прогресс обработки большого объема чего либо. ЗАгрузка данных, справочников, etc.
PaintSplash из какого потока вызывается?
источник

VA

Viktor Akselrod in Delphi & Lazarus
вижу. из главного потока.
вопрос остается открытым. зачем там поток?
поток создается просто ради создания.
источник

АВ

Александр В in Delphi & Lazarus
Стоп. Я ведь предлагаю не универсальное решение, а под определенную задачу. В случае, если необходимо, чтобы главная форма была доступна, и что-то там в потоке где-то обрабатывалось фоном - нужен другой подход. Если все сделать в главном, интерфейс зафризится, и все.
источник

VA

Viktor Akselrod in Delphi & Lazarus
Александр В
Стоп. Я ведь предлагаю не универсальное решение, а под определенную задачу. В случае, если необходимо, чтобы главная форма была доступна, и что-то там в потоке где-то обрабатывалось фоном - нужен другой подход. Если все сделать в главном, интерфейс зафризится, и все.
у тебя и работа и прогресс идет в главном потоке.
источник

АВ

Александр В in Delphi & Lazarus
Но у меня прекрасно отображается прогресс обработки данных, чего не скажешь при выполнении без оного. Ну я же говорю, если надо, чтобы был и тред и что-то в главной форме выполнялось, нужен просто другой подход-)
источник

VA

Viktor Akselrod in Delphi & Lazarus
Александр В
Но у меня прекрасно отображается прогресс обработки данных, чего не скажешь при выполнении без оного. Ну я же говорю, если надо, чтобы был и тред и что-то в главной форме выполнялось, нужен просто другой подход-)
убери свой поток и будет всё тоже самое.
источник

VA

Viktor Akselrod in Delphi & Lazarus
 procedure TWThread.Execute;
 begin
   Synchronize(@DoWork);
   //inherited;
 end;


несколько вопросов на засыпку:
1) что будет с потоком, в котором вызывается Synchronize?
2) в каком потоке будет вызвана DoWork?
источник

АВ

Александр В in Delphi & Lazarus
Я пытаюсь объяснить, что мне так было нужно для своей задачи:D Соответственно автор вопроса, вполне себе может убрать то, как ему не надо, и синхронизировать прогресс там где надо и так как надо-))
источник

VA

Viktor Akselrod in Delphi & Lazarus
а я пытаюсь объяснить, что твой код по факту фикция
источник

АВ

Александр В in Delphi & Lazarus
Ну тоесть в данном случае, тебе не нравится, что использован тред для выполнения в майн треде?-)
источник

АВ

Александр В in Delphi & Lazarus
А я тебе говорю, что если надо не как у меня, то убираем синхронизацию с DoWork, и в наследнике расставляем что, где надо-) Не забыв определить функции прогресса для синхронизации.
источник

VA

Viktor Akselrod in Delphi & Lazarus
если ты уберешь синхронизацию с DoWork, то будет обращение к визуальным компонентам и приложение с большой долей вероятности вылетит
источник

VA

Viktor Akselrod in Delphi & Lazarus
как-то я писал  одному из участников чата пример ожидания длительной задачи , выполняющейся в доп потоке
возможно он частично подойдет
https://bitbucket.org/vaksel/progressview/src/master/
источник

АВ

Александр В in Delphi & Lazarus
Так чтобы не вылетел, в наследнике нужно вызвать синхронизации там, где будет отображаться прогресс:)
источник

АВ

Александр В in Delphi & Lazarus
Кстати, ведь всегда можно использовать сообщения. А в форме их обработать
источник

ea

eugene afx in Delphi & Lazarus
Переслано от eugene afx
прогрессбар не обновляется во время скачивания файла 1мб через идхттп.
в чем проблема?


procedure TTabbedForm.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64);
begin

progressbar1.Value:=aworkcount div 100;
end;

procedure TTabbedForm.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode; AWorkCountMax: Int64);
begin
progressbar1.max:=aworkcountmax div 100;
end;
источник

ea

eugene afx in Delphi & Lazarus
если ставлю progressbar1.position:=aworkcount div 100;
ругается
[dcc64 Error] TabbedTemplate.pas(145): E2010 Incompatible types: 'TPosition' and 'Int64'
источник

F

Fox in Delphi & Lazarus
Всем привет. В делфи использую компонент хромиум. 3 недели он открывал сайт нормально а сегодня в упор не хочет открывать именно один сайт. Какие предложения? почему не открывает? В хроме и мазиле все открывает.
источник