Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 14

Как "отпустить" файл после неудачного копирования на FTP?

24.07.2014, 13:40. Показов 3783. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Проблема такая копирую файлы с помощью idftp.put и когда при копировании канал падает я через пару минут возобновить копирование пытаюсь выдает ошибку что данный файл занят другим процессом. Других процессов кроме как копирование на фтп нету. А когда проходит примерно минут 15 то фал освобождается и всё копируется, но у у мне некогда столько ждать. Помогите пожалуйста всё перерыл нечего подходящего не нашел, closehandle не помогает.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2014, 13:40
Ответы с готовыми решениями:

Как настроить BAT после успешного копирования чтобы файл удалялся с ftp ресурса
Всем привет, что-то не получается настроить батник, Вообще он подключен к ftp ресурсу и берет от туда документ и скидывает его уже в...

Как отпустить файл, который сам же занял?
Извините за такое название, но иначе я буду долго ждать ответа.)) Delphi 7 Пишу прогу, сначала она сканирует директорию(код...

Как вернуть к проверке после неудачного ввода в if?
У меня есть программа: #include <iostream> #include <string> using namespace std; int main() { ...

27
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 14
30.07.2014, 14:22  [ТС]
Студворк — интернет-сервис помощи студентам
вот процедура котрая вызываеться в коде
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
procedure TForm1.FindFile(Dir: String);
Var SR:TSearchRec;
    FindRes:Integer;
    T:TDateTime;
begin
     FindRes:=FindFirst(Dir+'*.pdf',faAnyFile,SR);
    While FindRes=0 do
        begin
        if ((SR.Attr and faDirectory)=faDirectory) and ((SR.Name='.')or(SR.Name='..')) then
        begin
        FindRes:=FindNext(SR);
        Continue;
        end;
        if ((SR.Attr and faDirectory)=faDirectory) then
        begin
        FindFile(Dir+SR.Name+'');
        FindRes:=FindNext(SR);
        Continue;
        end;
    FindFile(Dir+SR.Name+'');
If IdFTP1.Connected=True then 
Begin
    If Stop=False then
    Begin
    T:=Time;
    if ((T>StrToTime('00:01:00')) and (T<StrToTime('18:45:00'))) and (CheckBox2.Checked=True) then
    Begin
    Memo1.Lines.Add('Копирование  "'+SR.Name+'" ia FTP : '+IdFTP1.Host+'');
    Application.ProcessMessages;
    IdFTP1.Put(''+Dir+SR.Name+'' , ''+SR.Name+'' , False);
    Memo1.Lines[Memo1.Lines.Count-1]:=Memo1.Lines[Memo1.Lines.Count-1]+' --  завершилось успешно';
    hendle:=sr.FindHandle;
    Gauge1.Progress:=(Gauge1.Progress)+1;//i?ioaiou +1
    inc(FTPCOPI);
    Label5.Caption:='Inoaeinu neiie?iaaou PDF: '+IntToStr ((c3+c26)-FTPCopi)+' oo.';
    Timer1.Interval:=60000;
    Application.ProcessMessages;
        DeleteFile(Dir+SR.Name);
    FindRes:=FindNext(SR);
    end
    else
    begin
    Memo1.Lines.Add('---------------------------------------------------------------------------------------------------------------------------');
    Memo1.Lines.Add('A?aiy ?ac?aoaiiia aey eiie?iaaiey auoei! Eiie?iaaiea ?ac?aoaii n 22:00 ii?e ai 18:45 aa?a?a.');
    Memo1.Lines.Add('Aee??ai "Nii" i?ioaao?u eiie?iaaiey ia 5 ?an.');
    Form4.Show;
    Form4.Timer1.Enabled:=True;
    Application.ProcessMessages;
    Sleep(19800000);
    Timer1.Enabled:=False;
    Form4.Hide;
    Application.ProcessMessages;
    end;
    end
    else
    Begin
    FindRes:=10;
    Memo1.Lines.Add ('    ');
    Memo1.Lines.Add ('Eiie?iaaiea ia OOI auei inoaiiaeaii i?eioaeoaeuii iieuciaaoaeai!');
    Memo1.Lines.Add ('    ');
    IdFTP1.Disconnect;
    Application.ProcessMessages;
    end;
end
else
Begin
IdFTP1.Disconnect;
Memo1.Lines.Add('Oaee '+SR.Name+' IA neiie?iaai ia FTP :'+IdFTP1.Host+'  iii?iaoai ?a?ac 30 naeoia!');
Form4.Show;
Timer1.Enabled:=True;
Application.ProcessMessages;
Sleep(30000); //eo?eou 30 naeoia
Timer1.Enabled:=False;
Form4.Hide;
Application.ProcessMessages;
IdFTP1.Connect();
end;
     end;
     FindClose(SR);
end;
а вот обработчик ошибки при возникновении проблем с копированием
Delphi
1
2
3
4
5
except 
    IdFTP1.Disconnect;
    DeleteObject(Hendle);
    If IdFTP1.Connected=True then Memo1.Lines[Memo1.Lines.Count-1]:=Memo1.Lines[Memo1.Lines.Count-1]+' --  завершилось ошибкой!;  
Memo1.Lines.Add ('            ');
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
30.07.2014, 21:32
...обработчик вырван из общего контекста и не завершен, например что есть Hendle? Хэндл чего, коня в вакууме? И где уничтожение объекта класса?
0
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 14
31.07.2014, 08:13  [ТС]
Hendlie это тип интеджер если вы всёдаки посмотните когд процедуры то всё увидите. Это хендл файла который копировал метод put
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
31.07.2014, 14:15
Code
1
 hendle:=sr.FindHandle;
к методу Put() он не имеет ни малейшего отношения.
0
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 14
31.07.2014, 14:18  [ТС]
IdFTP1.Put(''+Dir+SR.Name+'' , ''+SR.Name+'' , False);
Memo1.Lines[Memo1.Lines.Count-1]:=Memo1.Lines[Memo1.Lines.Count-1]+' -- завершилось успешно';
hendle:=sr.FindHandle; вот та самая строчка которой не "видно" выше в постн 21 это всё есть
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
31.07.2014, 14:24
"' -- завершилось успешно';"
- наивное предположение, переход на следующую строку означает лишь то, что метод вернул управление коду, но его завершение отрабатывает в событии OnAfterPut().

"''+Dir+SR.Name"
- это лишь к путь к файлу.

И где уничтожение объекта класса idFTP?
0
0 / 0 / 0
Регистрация: 24.07.2014
Сообщений: 14
02.08.2014, 11:35  [ТС]
А как уничтожить объект класса idftp?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.08.2014, 12:51
http://www.gunsmoker.ru/2009/0... -free.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.08.2014, 12:51
Помогаю со студенческими работами здесь

Как восстановить плеер после неудачного получения root?
Здравствуйте! Заранее хочу извинится, если не туда... У меня плеер Samsung Galaxy YP-G50 (Android 2.1)...Хотел получить на него root и по...

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

Отпустить созданный файл
Доброго времени суток! Сразу к делу, создаю файл так: File.Create(filePath); После чего, не делаю с файлом никаких манипуляций,...

Image.Source отпустить показанный файл
Добрый день. Суть заключается в том что создаю изображение из потока(File.Create()), поток ясным делом закрывается так как в using.. далее...

Как восстановить Windows 7 после неудачного обновления до Windows 10?
Всем доброго времени суток. Подскажите, пожалуйста, возможно ли восстановить windows7? Обновилась (самостоятельно, ночью, пока я спала)...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru