Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
ВнизПодскажите пожалуйста почему выдается ошибка в TidFTP? Найти похожие ветки
← →
TankMan (2007-11-08 01:54) [0]Не могу понять в чем загвоздка. Суть программы такова, чтобы копировать список файлов указанных в 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;
← →
Сергей М. © (2007-11-08 09:48) [1]
> if str1=nil then ShowMessage("НЕ создан str1");
Начнем с того, что это сообщение ты никогда не увидишь.
← →
TankMan (2007-11-08 12:10) [2]Да это и не важно - это мусор, я уже не знал что делать. сдесь вообще мусора достаточно, но тем не менее не понятно почему idportal.List(str1,"*",false) возвращает ошибку :(
← →
Сергей М. © (2007-11-08 13:22) [3]
> почему idportal.List(str1,"*",false) возвращает ошибку
Потому что - ты же сам сказал - Acces violation at adress xxxxx
Выделенное жирным весьма информативно для поиска причины.
← →
Anatoly Podgoretsky © (2007-11-08 15:53) [4]Это адрес xxxxx
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c