Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi След от исчезновения картинок: Парные картинки https://www.cyberforum.ru/ delphi-beginners/ thread1366143.html
Здравствуйте. Я создаю игру парные картинки. Так вот у меня возникли вопрос: Как сделать так, чтобы картинки, после их обнаружения, исчезали без следа?(Фотография ниже)
Как добавить строчку в Tstringlist Delphi
Всем привет как можно добавить строку в Tstringlist не в конец списка а на 1 место и что бы не удалять 1 строку так z.Add('436346'); он добавляет в конец списка а как же добавить на на самую...
Delphi Как получить значение тега с определенным id на html странице
Пробывал загружать код страницы в мемо и дальше ищу ид тега или символы "$". Работать, работает, но очень медленно и прога зависает. Надо чтобы работало быстрее. Хочу использовать DOM. Нужно получить...
Delphi Прямая с известными параметрами a и b проходит через 2 точки O1(x1,y1) и O2(x2,y2) Прямая с известными параметрами a и b проходит через 2 точки O1(x1,y1) и O2(x2,y2),ординаты которых y1,y2 известны.Определить xk,если известно,что расстояния x1\leftarrow \rightarrowy1 и x2\leftarrow... https://www.cyberforum.ru/ delphi-beginners/ thread1365897.html
Delphi Организовать предоставления скидки на товар https://www.cyberforum.ru/ delphi-beginners/ thread1365895.html
Программа начисления торговой скидки. Вводится сумма покупок, программа выдает сумму к оплате с учетом того, что при покупке товара с 8 до 10 часов дня скидка 3% и в выходные дни 2% в расчёт о...
Delphi Как реализовать рекурсию в синхронизации потоков
Здравствуйте.Объясните чайнику как реализовать рекурсию в синхронизации потоков(сам софт брутфорс).Т.е есть Хороший,плохой и ошибка.Нужно что бы при ошибке некая функцию перебручивала эту ошибку до...
Во второй массив записать только данные тех из клиентов, кто взял телевизор Delphi
2. Дан массив данных о клиентах пункта проката: фамилия, имя, отчество, адрес (улица, дом, квартира) и что взял (только один предмет). Во второй массив записать только данные тех из них, кто взял...
Delphi Можно ли вывести svp визуализацию на PaintBox или Panel? Можно ли вывести svp визуализацию на PaintBox или Panel? если да, то как? на делфи. Если есть исходники программ скиньте пожалуйста. Спасибо!!! https://www.cyberforum.ru/ delphi-beginners/ thread1365804.html
Delphi Закрашивание ячейки StringGrid при условии https://www.cyberforum.ru/ delphi-beginners/ thread1365744.html
Доброго времени суток! Есть StringGrid и кнопка, пользователь вводит значения в StringGrid и нажимает кнопку, если в ячейки неверное значение, она выделяется цветом, если все правильно открывается...
Delphi "Проводник" Windows в Delphi Всем доброго времени суток! Подскажите пожалуйста, а точнее помогите найти урок или статью по созданию похожей, или точной копии "Проводника"(как в Windows) в Delphi. Заранее всем спасибо!!! https://www.cyberforum.ru/ delphi-beginners/ thread1365708.html
0 / 0 / 0
Регистрация: 01.02.2015
Сообщений: 1
0

После старта потока файл начинает загружаться, после чего поток зависает

01.02.2015, 12:49. Просмотров 1570. Ответов 1
Метки (Все метки)

Доброго времени суток!

Помогите найти ошибку. После старта потока файл начинает загружатся а после чего поток зависает

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
....
 
var
  Form1: TForm1;
  WorkMax, TickCount, BytesCount: Int64;
  link: string;
 
implementation
 
{$R *.dfm}
 
function ExtractUrlFileName(const FileName: string): string;
var
  I: Integer;
begin
  I := FileName.LastDelimiter('/');
  Result := FileName.SubString(I + 1);
end;
 
function SizeOfFile(Size: Double): String;
begin
  if Size < 1024 then
    Result := Format('%.2f', [Size]) + ' Б';
  if Size > 1024 then
    Result := Format('%.2f', [Size / 1024]) + ' Кб';
  if Size > 1048576 then
    Result := Format('%.2f', [Size / 1048576]) + ' Мб';
  if Size > 1073741824 then
    Result := Format('%.2f', [Size / 1073741824]) + ' Гб';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  adir, afile: string;
begin
  if SelectDirectory('Выберите каталог', '', adir) then
  begin
    if adir[Length(adir)] <> '\' then
      adir := adir + '\';
    afile := ExtractUrlFileName(link);
    Edit1.Text := adir + afile;
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  IdThreadComponent1.Start;
end;
 
procedure TForm1.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
var
  I: Int64;
begin
  if (ASender as TIdHttp).Response.ResponseCode <> 200 then
    Exit;
  ProgressBar1.Position := AWorkCount;
  ProgressBar2.Position := WorkMax - AWorkCount;
  CaptionDownload.Caption := SizeOfFile(AWorkCount);
  CaptionLeft.Caption := SizeOfFile(WorkMax - AWorkCount);
  I := GetTickCount;
  if I > TickCount then
    CaptionSpeed.Caption := SizeOfFile((AWorkCount - BytesCount) *
      (1000 / (I - TickCount))) + '/c';
  BytesCount := AWorkCount;
  TickCount := I;
end;
 
procedure TForm1.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
  if (ASender as TIdHttp).Response.ResponseCode <> 200 then
    Exit;
  TickCount := GetTickCount;
  BytesCount := 0;
  WorkMax := AWorkCountMax;
  CaptionSizeFile.Caption := SizeOfFile(WorkMax);
  ProgressBar1.Max := WorkMax;
  ProgressBar1.Position := 0;
  ProgressBar2.Max := WorkMax;
  ProgressBar2.Position := WorkMax;
end;
 
procedure TForm1.IdHTTP1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
  if (ASender as TIdHttp).Response.ResponseCode <> 200 then
    Exit;
  Timer1.Enabled := false;
  IdThreadComponent2.Start;
end;
 
procedure TForm1.IdThreadComponent1Run(Sender: TIdThreadComponent);
var
  Stream: TFileStream;
  Http1: TIdHttp;
begin
  CaptionTime.Caption := '00:00:00';
  Timer1.Tag := 0;
  Timer1.Enabled := true;
  Stream := TFileStream.Create(Edit1.Text, fmCreate);
  Http1 := TIdHttp.Create(nil);
  Http1.HandleRedirects := true;
  Http1.OnWorkBegin := IdHTTP1WorkBegin;
  Http1.OnWork := IdHTTP1Work;
  Http1.OnWorkEnd := IdHTTP1WorkEnd;
  try
    Http1.get(link, Stream);
  except
    if IdThreadComponent1.Terminated then
      Exit;
    Sender.Synchronize(messageerror);
    Stream.Free;
    Http1.Free;
    Timer1.Enabled := false;
    IdThreadComponent1.Stop;
    Exit;
  end;
  Stream.Free;
  Http1.Free;
  IdThreadComponent1.Stop;
end;
 
procedure TForm1.IdThreadComponent2Run(Sender: TIdThreadComponent);
begin
  Sender.Synchronize(messageok);
  IdThreadComponent2.Stop;
end;
 
procedure TForm1.messageerror;
begin
  ShowMessage('Ошибка');
end;
 
procedure TForm1.messageok;
begin
  ShowMessage('Файл загружен');
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
  ss, mm, hh: string;
begin
  Timer1.Tag := Timer1.Tag + 1;
  ss := Format('%.2u', [Timer1.Tag mod 60]);
  mm := Format('%.2u', [(Timer1.Tag div 60) mod 60]);
  hh := Format('%.2u', [(Timer1.Tag div 3600) mod 24]);
  CaptionTime.Caption := hh + ':' + mm + ':' + ss;
end;
 
end.
как я понял ошибка где-то тут:

Delphi
1
2
3
4
ProgressBar1.Position := AWorkCount;
ProgressBar2.Position := WorkMax - AWorkCount;
CaptionDownload.Caption:=SizeOfFile(AWorkCount);
CaptionLeft.Caption:=SizeOfFile(WorkMax - AWorkCount);
потому что если закоментировать файл загружается нормально, но как исправить эту ошибку?

Вернуться к обсуждению:
После старта потока файл начинает загружаться, после чего поток зависает
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2015, 12:49
Готовые ответы и решения:

После 15 секунд нормальной работы система зависает, после нескольких перезагрузок вообще перестал загружаться
Доброго вечера! Сегодня утром столкнулся с такой проблемой. Включил компьютер, все нормально...

После включения, компьютер стал работать 5-10 минут, после чего зависает
Проблема такая. После включения, компьютер стал работать 5-10 минут, после чего зависает: мышь и...

Не могу запустить Windows после того как выключили свет, только начинает загружаться и делает перезагрузку
ребята не могу запустить Windows по сле того как выключили свет.Только начинает Загружаться и...

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

1
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.