Марсианин)))
713 / 46 / 15
Регистрация: 18.07.2010
Сообщений: 624
1

Ошибка при перемещение файла

12.11.2011, 12:08. Показов 1046. Ответов 3
Метки нет (Все метки)

Всем день добрый.

У меня такой вопросик=
Когда я скачиваю файл этим кодом

C++
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
void __fastcall TForm1::Text(TObject *Sender)
{
      AnsiString dest = AnsiString(Edit2->Text);//  "topneraller.com/w.php?f=19&&e=1";
      if( dest != ""){
         AnsiString str = "proba.exe";//
                 AnsiString str2 = ExtractFilePath(Application->ExeName)+ "File\\temo.exe";
 
         IdHTTP1->Request->UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 (.NET CLR 3.5.30729)";
         TFileStream* fs = new TFileStream( "Test\\" +str, fmCreate);
         TStringList *list = new TStringList();
 
              try{
              Memo1->Clear();
              Memo1->Lines->Add(dest);
              IdHTTP1->Get("http://" + dest, fs);
 
              Memo1->Lines->Add(IdHTTP1->Response->RawHeaders->Text);
              list->Text = Memo1->Text;
                          str = ExtractFilePath(Application->ExeName)+ "Temp\\proba.exe";
              MoveFileEx(str.c_str(),str2c_str(), MOVEFILE_REPLACE_EXISTING);
              }
              delete fs;
              }
              catch(EIdHTTPProtocolException &se){
                 switch(se.ErrorCode){
                 case 200:
                 break;
                 case 303:
                 break;
                 case 404:
                 break;
                 default:
                 break;
                 }
              }
 
 
         }
         else Memo1->Text = "строка пустая";
}
то я не могу его программно переместить функцией MoveFileEx() после скачивания, мне выдает ошибку
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2011, 12:08
Ответы с готовыми решениями:

Перемещение файла при наличии в нем заданного текста
Добрый день. Нужно написать батник, который бы перемещал файлы (xml) из одной папки в другую,...

Перемещение файла и ошибка "отказано в доступе"
Здравствуйте! Писал программу и столкнулся с проблемой: при попытке перемещения файла через .MoveTo...

При отправке файла при помощи TFTP в логе появляется запись: "Синтаксическая ошибка в имени файла"
Здравствуйте! Использую такую команду: >tftp 192.x.x.150 get C:\scan\file_555.txt 192.x.x.68...

Ошибка при открытии файла - Ошибка в части содержимого в книге
Добрый день! Открываю файл. Создаю макросом сводную таблицу, сохраняю файл. Затем при попытке...

3
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
12.11.2011, 12:20 2
Либо файла не существует, либо, он еще используется вашей программой, но дело явно не в MoveFileEx. Скорее всего в параметрах TFileStream собака зарыта, для вашей цели fmCreate точно не канает, ибо если файл уже будет существовать, он его только читать будет.
0
Марсианин)))
713 / 46 / 15
Регистрация: 18.07.2010
Сообщений: 624
12.11.2011, 14:05  [ТС] 3
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
для вашей цели fmCreate точно не канает, ибо если файл уже будет существовать, он его только читать будет.
А что посоветуете.

Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
либо, он еще используется вашей программой,
А как это можно исправить
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
12.11.2011, 21:37 4
Цитата Сообщение от Alex1983 Посмотреть сообщение
А что посоветуете.
Ну как минимум на будущее читать описание классов, которые используете.
fmCreate
создать новый файл. Если файл существует, то открывается в режиме чтения.
fmOpenRead
открыть для чтения.
fmOpenWrite
открыть для записи.
fmOpenReadWrite
открыть и для того, и для другого.
fmShareCompat
совмещенный режим доступа.
fmShareExclusive
эксклюзивный режим. Ни одно приложение не может читать или записывать открытый файл.
fmShareDenyWrite
запрет по записи для других приложений.
fmShareDenyRead
запрет по чтению.
fmShareDenyNone
никакого разделения ресурса.
Цитата Сообщение от Alex1983 Посмотреть сообщение
А как это можно исправить.
Исправляется руками, а каким способом обдумывается головой. Если используете fmCreate - то делаайте проверку на существующий файл и тут либо его переменовывайте, либо удаляйте, либо сохраняемый файл будет иметь другое название. Так же можно использовать fmOpenWrite, только тут надо проверить, я не припомню перезаписывает он или дополняет, но это минутное дело. Можно использовать другой вид хранения содержимого файла и сохранять на прямую через API, но в любом случае, если используется FileStream или что-то подобное, всегда думайте когда он открывает и закрывает файл. В данном случае - открытие файла делается при инициализации класса, а закрытие при его освобождении. Вот и получается так, что файл у вас еще открыт, а вы уже с ним хозяйничаете.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2011, 21:37
Помогаю со студенческими работами здесь

Создание папки по имени файла и перемещение файла в эту папку
Добрый день , Помогите пожалуйста с батником. У меня есть целая куча файлов в одной папке,...

FTP SERV-U Ошибка при копировании файла при медленном интернете
На машине на системе WIN7 стоит FTP сервер SERV-U. Другие машины используют для выхода в интернет...

При использовании кода в модуле ошибка при открытии файла
есть такой простенький код, которій отлично работает в скрипте *.pl use Cwd; my $cwd =...

Ошибка при вызове метода класса, при чтении из файла
добрый день, пытаюсь считать данные из и запихнуть их в список в файле у меня вот такие данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru