|
Gauge и потоки ошибка - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе |
07.05.2013, 11:11
|
#1
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
Gauge и потоки ошибка
Индикатор использую для закачки Gauge, качаю через Инди в отдельном потоке.
Gauge выдаёт ошибки при закачке ссылаясь на ntdll.dll.
100% ошибка из-за отдельного потока, проверял.
Какчать вне потока не комфортно.
С ProgressBar нет ошибок.
Даже не знаю как это исправить.
Немножко кода
Код:
procedure Tupd.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
sGauge1.Progress:=AWorkCount;
end;
procedure Tupd.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
sGauge1.Progress:=0;
sGauge1.Update;
sGauge1.MaxValue:=AWorkCountMax;
end;
procedure Tupd.IdHTTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
sGauge1.Progress:=0;
MessageDlg('Готово',mtInformation,[mbOK],0);
end;
Код:
procedure Tupd.sButton1Click(Sender: TObject);
begin
Downloads:=TDownloads.Create(False);
Downloads.Priority:=tpHighest;
end;
Код:
procedure TDownloads.Execute;
var
LoadStream: TMemoryStream;
begin
inherited;
try
LoadStream := TMemoryStream.Create;
upd.idHTTP1.Get(decode('àÈÈl://hhh.oOoÀ0y-ÆàoêÈ.Àb/Ráüo/úêÃo.o8o'), LoadStream);
LoadStream.SaveToFile(decode('úêÃo.o8o'));
LoadStream.Free;
except
on e:Exception do
LoadStream.Free;
end;
end;
|
|
|
07.05.2013, 12:28
|
#2
|
|
|
|
Лейтенант-командор
|
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: Gauge и потоки ошибка
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536 |
|
|
|
|
|
|
|
Downloads.Priority:=tpHighest;
|
|
|
|
|
|
вот это зря
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536 |
|
|
|
|
|
|
|
upd.idHTTP1.Get(decode('àÈÈl://hhh.oOoÀ0y-ÆàoêÈ.Àb/Ráüo/úêÃo.o8o'), LoadStream);
|
|
|
|
|
|
Вполне возможно, что из-за этого. Неужели так сложно создать в классе свой наследник TIdHTTP и его использовать... А то, что отмечено зелёным я даже комментировать не буду
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536 |
|
|
|
|
|
|
|
LoadStream.SaveToFile(decode('úêÃo.o8o'));
|
|
|
|
|
|
Аналогично.
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536 |
|
|
|
|
|
|
|
try
LoadStream := TMemoryStream.Create;
upd.idHTTP1.Get(decode('àÈÈl://hhh.oOoÀ0y-ÆàoêÈ.Àb/Ráüo/úêÃo.o8o'), LoadStream);
LoadStream.SaveToFile(decode('úêÃo.o8o'));
LoadStream.Free;
except
on e:Exception do
LoadStream.Free;
end;
|
|
|
|
|
|
абсолютно неправильное использование конструкции try. Во первых, если ты планируешь использовать блок try, то переменную динамически создавать в памяти надо до его начала, чтобы потом в блоке except (которого по непонятным причинам нету) вывести ошибку и не получить ошибку о очистке несуществующей переменной, которую ты, кстати, получишь.
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536 |
|
|
|
|
|
|
|
Downloads:=TDownloads.Create(False);
Downloads.Priority:=tpHighest;
|
|
|
|
|
|
Это вообще бред. Ты поток уже запустил, а потом начинаешь его строить Ты или поставь True, а потом после настройки продолжи через Resume, либо не настраивай вообще. И ещё. Ты поток создал, молодец, а где ты его завершаешь?
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.
|
|
|
Пользователь сказал cпасибо:
|
|
07.05.2013, 14:40
|
#3
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
Re: Gauge и потоки ошибка
VeTaL_UA, С прогресс баром работает всё хорошо, а с гуи не хочет.
Ошибка в потоке и компоненте, так как токо сним ошибка лезит.
Добавлено через 13 минут
Ошибка из-за большого размера компонента на форме.
При стандартном всё хорошо.
Так вот и вопрос, как увеличить размер без ошибки?
Последний раз редактировалось Dimedrol1536; 07.05.2013 в 14:54.
Причина: Добавлено сообщение
|
|
|
07.05.2013, 17:28
|
#4
|
|
|
|
Старший сержант
|
Регистрация: 25.12.2011
Сообщений: 191
Популярность: 5259
Сказал(а) спасибо: 31
Поблагодарили 235 раз(а) в 135 сообщениях
|
Re: Gauge и потоки ошибка
Попробуй индейца создать в допольнительном потоке, а не в основном, и все процедуры перегнать в этот поток с использованием синхронизации для обращения к форме. Плюс согласен с сообщениями выше. От размера компонента это врядли как то может зависеть.
|
|
|
07.05.2013, 18:04
|
#5
|
|
|
|
Лейтенант-командор
|
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
|
Re: Gauge и потоки ошибка
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536 |
|
|
|
|
|
|
|
VeTaL_UA, С прогресс баром работает всё хорошо, а с гуи не хочет.
|
|
|
|
|
|
Советовал бы для начала разобраться, что такое GUI, это я к тому, что TProgressBar никаким образом не менее "гуевее", чем TGauge
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536 |
|
|
|
|
|
|
|
Ошибка в потоке и компоненте, так как токо сним ошибка лезит.
|
|
|
|
|
|
Я же написал возможные причины ошибок. Исправляй.
|
Цитата: |
|
|
|
|
Сообщение от Dimedrol1536 |
|
|
|
|
|
|
|
Ошибка из-за большого размера компонента на форме.
|
|
|
|
|
|
Очень сомневаюсь, что дело в этом.
|
Цитата: |
|
|
|
|
|
|
|
|
|
Попробуй индейца создать в допольнительном потоке, а не в основном, и все процедуры перегнать в этот поток с использованием синхронизации для обращения к форме.
|
|
|
|
|
|
Ну я примерно это и написал
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Помогите!] потоки
|
llbumerll |
Вопросы и ответы, обсуждения |
4 |
31.03.2013 04:21 |
[Статья] [.NET] Потоки.
|
OrBiT_DaRk |
С/С++ |
0 |
30.11.2012 15:55 |
[Помогите!] Потоки.
|
[Na`Vi]DendI |
Вопросы и ответы, обсуждения |
23 |
31.10.2012 21:08 |
[Помогите!] потоки почему ?
|
[Na`Vi]DendI |
Вопросы и ответы, обсуждения |
3 |
11.06.2012 09:44 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 18:26.
|
|