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

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

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2009, 00:08   #1
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию ftp удаление, копирование и переименование директории

Добрый вечер. Очень нужна ваша помощь. Как можно организовать удаление, копирование и переименование не пустой директории на ftp-сервере. Использую indy. Понимаю, что нужно использовать рекурсию. Даже нашел пару вариант как это реализовать, но не выходит - выскакивает ошибка "CWD" command not implemented.

Вот исходник клиента:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdFTP, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdFTPList;

type
TForm1 = class(TForm)
Button1: TButton;
FTP: TIdFTP;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FTPConnected(Sender: TObject);
procedure Button2Click(Sender: TObject);
private

procedure DelFTPDir(Dir: String);

{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.DelFTPDir(Dir: String);
var DL: TStringList;
L,FTPDL:TStringList;
i: integer;
begin
Application.ProcessMessages;
if FTP.Connected then
begin
DL:=TStringList.Create;
L:=TStringList.Create;
FTPDL:=TStringList.Create;
FTP.ChangeDir(Dir);
FTP.List(DL);
for i:=0 to DL.Count-1 do
begin
FTPDL.Add(FTP.DirectoryListing[i].FileName);
if FTP.DirectoryListing[i].ItemType = ditDirectory then
L.Add('d') else
L.Add('f');
end;
for i:=DL.Count-1 downto 0 do
begin
if (L[i]='d') then
begin
if (FTPDL[i]<> '.') and
(FTPDL[i]<> '..') then
begin
DelFTPDir(FTPDL[i]);
end;
end
else
begin
FTP.Delete(FTPDL[i]);
end;
end;
FTP.ChangeDirUp;
FTP.RemoveDir(Dir);
FTPDL.Destroy;
DL.Destroy;
L.Destroy;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
FTP.Connect;
end;

procedure TForm1.FTPConnected(Sender: TObject);
begin
caption:='con';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DelFtpDir('\111');
end;

end.

Последний раз редактировалось ikot; 05.07.2009 в 00:10.
ikot вне форума Ответить с цитированием
Старый 05.07.2009, 00:18   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Делайте паузу в цикле. Ошибка (Change Working Directory) срабатывает скорей всего из- за частой смены директории.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 05.07.2009, 01:28   #3
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
Делайте паузу в цикле. Ошибка (Change Working Directory) срабатывает скорей всего из- за частой смены директории.
Самое смешное это то, что внутри этой папки находится только один текстовый файл. Так что думаю проблема не в этом.

Я вот тут думаю, может код сервера не тот. Использую код сервера из demo от indy
ikot вне форума Ответить с цитированием
Старый 05.07.2009, 19:56   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Для информации.http://www.indyproject.org/docsite/h...ir@string.html
Попробуйте выполнять List перед changedir
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование обновленного файла с ftp на сервер dirrer Работа с сетью в Delphi 11 16.03.2009 17:07
Копирование директории artemavd Общие вопросы Delphi 8 16.01.2009 17:34
Копирование файлов на FTP Dj_smart Общие вопросы Delphi 2 05.03.2008 09:04
Реестр.Удаление из автозагрузки.Копирование Marsik Общие вопросы Delphi 11 07.12.2007 18:02