Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2014, 19:07   #1
mihalech19
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 38
По умолчанию Процесс не может получить доступ к файлу

Без idAntyFreez все работает. Как только добавляю антифриз сразу начинает кидать ошибку "Процесс не может получить доступ к файлу".
Вот код:
Код:
TFileStream* fStream = new TFileStream("check.exe", fmCreate | fmOpenWrite);
IdHTTP2->Get("http://bla-bla/check.exe",fStream);
mihalech19 вне форума Ответить с цитированием
Старый 03.07.2014, 19:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А если это оформить в TThread?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.07.2014, 19:48   #3
mihalech19
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 38
По умолчанию

А можно поподробнее ?
mihalech19 вне форума Ответить с цитированием
Старый 03.07.2014, 20:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Имею ввиду не пользоваться компонентом, а засунуть получение файла в сопроцесс: http://cubook.supernew.org/manual-c/...6-tthread.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.07.2014, 23:18   #5
mihalech19
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 38
По умолчанию

Вот я "засунул" в сопроцесс. Теперь незнаю, как создать обработчик события для TIdHTTP. Может подскажите как сделать ?
Код:
#include <vcl.h>
#pragma hdrstop
#include "Unit5.h"
#include "Unit4.h"
TIdHTTP *IdHTTP1 = new TIdHTTP;
void __fastcall IdHTTP1WorkBegin(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCountMax)
{
 Form4->ProgressBar1->Max = AWorkCountMax;
}

void __fastcall IdHTTP1Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)

{
Form4->ProgressBar1->Position = AWorkCount;
}
#pragma package(smart_init)

__fastcall d::d(bool CreateSuspended)
	: TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall d::Execute()
{

TFileStream* fStream = new TFileStream("check.exe", fmCreate|fmOpenReadWrite);
IdHTTP1->Get("http://bla-bla/check.exe", fStream);
delete fStream;
}
Но прогрессбар почему-то все-равно на месте стоит
mihalech19 вне форума Ответить с цитированием
Старый 04.07.2014, 07:31   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

IdHTTP1WorkBegin и IdHTTP1Work тоже в тред засунь. А потом что-то типа:
Код:
IdHTTP1->OnWorkBegin=IdHTTP1WorkBegin;
IdHTTP1->OnWork=IdHTTP1Work ;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.07.2014, 10:20   #7
mihalech19
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 38
По умолчанию

Всмысле в новый тред или куда?
mihalech19 вне форума Ответить с цитированием
Старый 04.07.2014, 10:30   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я не специалист по билдеру. Всмысле в поток. Опиши IdHTTP1WorkBegin и IdHTTP1Work как события потока, и в Execute поприсваивай компоненту эти события.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.07.2014, 10:38   #9
mihalech19
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 38
По умолчанию

Кидает ошибку
Cannot convert 'void(TObject *,TWorkMode,__int64)' to 'TWorkBeginEvent'
mihalech19 вне форума Ответить с цитированием
Старый 04.07.2014, 11:52   #10
mihalech19
Пользователь
 
Регистрация: 24.06.2014
Сообщений: 38
По умолчанию

Все догнал. Нужно было писать вот так:
Код:
void __fastcall d::IdHTTP2Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)
mihalech19 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
...доступ к файлу.... maxvip Операционные системы общие вопросы 6 26.04.2010 10:30
Доступ к файлу panda88 Общие вопросы Delphi 3 20.01.2010 13:34
Получить доступ к файлу yngwie Win Api 1 08.04.2009 14:11
Как получить доступ к файлу в локальной сети. DV-Karpov Работа с сетью в Delphi 2 18.11.2008 21:53