|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.07.2009, 00:08 | #1 |
Пользователь
Регистрация: 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. |
05.07.2009, 00:18 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Делайте паузу в цикле. Ошибка (Change Working Directory) срабатывает скорей всего из- за частой смены директории.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
05.07.2009, 01:28 | #3 | |
Пользователь
Регистрация: 29.09.2008
Сообщений: 56
|
Цитата:
Я вот тут думаю, может код сервера не тот. Использую код сервера из demo от indy |
|
05.07.2009, 19:56 | #4 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Для информации.http://www.indyproject.org/docsite/h...ir@string.html
Попробуйте выполнять List перед changedir
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
копирование обновленного файла с 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 |