Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите пожалуйста почему выдается ошибка в TidFTP? [D7, WinXP]


TankMan ©   (2007-11-08 01:54:00) 

Не могу понять в чем загвоздка. Суть программы такова, чтобы копировать список файлов указанных в Memo в директорию указанную в ePathtoCopy. Директории может и не быть, поэтому если что мне нужно ее создать. Вот и написал такую маленькую функцию CahngeFullDir. Все вроде бы нормально, исполняется и выполняется, но только один раз после запуска приложения. Когда я нажимаю второй раз на эту же кнопу, то в строчке "Вот здесь" , выдается ошибка причем почему-то разные ошибки то Acces violation at adress xxxxx то EPrivelege и что-то по поводу привелегий (сейчас уже не могу добиться ее отображения)
одно меня мучает, не могу понять, я ведь не зря уже разделил целевую строчку директории на две, в два захода чтобы дошло до нужно директории, а он проходит первое использование CahngeFullDir (полностью) и при втором заходе выдает ошибку на той строчке после 1го прохода ее рекурсивно....  и даже после этой ошибки, я еще раз нажимаю кнопку и опять повторяется тоже самое - первый раз CahngeFullDir проходит нормально а второй раз нет :(
Не могу понять... в чем же может быть дело подскажете?  

procedure TForm1.btnConnectClick(Sender: TObject);
var
i:integer;

procedure CahngeFullDir(Dest:string);
var str1:TStrings;
i:integer;
s:string;

begin
str1:=TStringList.Create;
if str1=nil then ShowMessage('НЕ создан str1');
Dest:=RightStr(Dest,length(Dest)-1);

i:=AnsiPos('/',Dest);
if i>0 then begin
s:=LeftStr(Dest,i-1);
Dest:=RightStr(Dest,Length(Dest)-i);
idportal.List(str1,'*',false)   <================== "Вот здесь"
if str1.IndexOf(s)>=0 then else
idportal.MakeDir(s);
idportal.ChangeDir(s);
i:=AnsiPos('/',Dest);
if i>0 then CahngeFullDir('/'+Dest)
else if length(Dest)>1 then
 CahngeFullDir('/'+Dest+'/');
//idportal.List(nil);
end;
str1.Free;
end;

procedure PutFile(FileName:string);

begin
idportal.TransferMode(dmStream);
try
FStream:=TFileStream.Create(FileName,fmOpenRead or fmShareExclusive);
idportal.Put(FStream,ExtractFileName(FileName));
finally
FStream.Free;
end;
end;

begin
if Assigned(idportal) then begin
idportal.Free;
idportal:=TIdFTP.Create(nil);
idportal.OnWork:=Form1.idportalWork;
end;
If idportal.Connected then
                       Begin
                             idportal.Abort;
                             idportal.Quit;
                       End;
idportal.Host:='192.168.0.130';
idportal.Username:='httpadmin';
idportal.Password:='12345678';
idportal.ProxySettings.Host:='';
idportal.ProxySettings.Port:=0;
idportal.Passive := false;
idportal.Connect;
If idportal.Connected then
 Begin
 idportal.ChangeDir('/');
 CahngeFullDir('/var/www/html');
 CahngeFullDir(ePathtoCopy.Text);
 
for i:=0 to Memo1.Lines.Count-1 do
   if FileExists(Memo1.Lines[i]) then
   PutFile(Memo1.Lines[i]);
   idportal.Abort;
   idportal.Quit;
   ShowMessage('Передача данных закончилась');
 End;

If idportal.Connected then
                       Begin
                             idportal.Abort;
                             idportal.Quit;
                       End;
end;


Anatoly Podgoretsky   (2007-11-08 15:53:00) [1]

Это адрес xxxxx


Сергей М.   (2007-11-08 13:22:00) [2]


> почему idportal.List(str1,'*',false) возвращает ошибку


Потому что - ты же сам сказал  - Acces violation at adress xxxxx

Выделенное жирным весьмаинформативно для поиска причины.


TankMan   (2007-11-08 12:10:00) [3]

Да это и не важно - это мусор, я уже не знал что делать. сдесь вообще мусора достаточно, но тем не менее не понятно почему idportal.List(str1,'*',false) возвращает ошибку :(


Сергей М.   (2007-11-08 09:48:00) [4]


> if str1=nil then ShowMessage('НЕ создан str1');


Начнем с того, что это сообщение ты никогда не увидишь.


Наверх

Титульная страница Поиск, карта сайта Написать письмо