Pobieranie i wysyłanie pliku przez TIdFTP

Odpowiedz Nowy wątek
adam_____
2013-07-30 21:33
adam_____
0

Witam.

Mam problem z pobieraniem i wysyłaniem pliku poprzez komponent TIdFTP.
Mam takie procedury:


function PolaczFTP:boolean;
begin
  with Form1.IdFTP do
  begin
   if Connected=False then
   begin
    Host:='nazwa';
    Username:='user';
    Password:='pass';
    if not Connected then
    begin
     Connect();
     result:=Connected
    end;
   end else
   begin
    result:=True;
   end;
  end;
end;

Połączenie jest realizowane prawidłowo problem jest w funkcjach wysyłania i pobierania - definicje poniżej:


procedure WyslijPlikFTP(Path:String;FileName:String);
var
Stream:TMemoryStream;
begin
 if (FileExists(Path+FileName)=True )then
 begin
  with Form1.IdFTP do
  begin
   if Connected then
   begin
    Stream:=TMemoryStream.Create;
    ChangeDir('TEST');
    Stream:=TMemoryStream.Create;
    Stream.LoadFromFile(Path+'\\'+FileName);
    Put(Stream,FileName);
    Stream.Free;
   end;
  end;
 end; 
end;

//////////////////////////////////////////////////////

procedure PobierzPlikFTP(Path:String;FileName:String);
var
Stream:TMemoryStream;
begin
 if (FileExists(Path+'\\'+FileName)=False)then
 begin
  with Form1.IdFTP do
  begin
   if Connected then
   begin
    Stream:=TMemoryStream.Create;
    ChangeDir('TEST');
    Get(FileName,Stream);
    Stream.SaveToFile(Path+'\\'+FileName);
    Stream.Free;
   end else
   begin
    Exit;
   end;
  end;
 end;
end;          

Podczas pobierania pliku program się zawiesza podczas wykonywania Get(FileName,Stream)

HELP.

edytowany 1x, ostatnio: olesio, 2016-12-13 18:26
Powinieneś kod przeformatować, ponieważ przed = czy := powinny być spacje. Poza tym = True zbędne przy porównaniach if'em, zaś = False zamieniamy na not. Natomiast z samym Indy pomoże tutaj chyba tylko @kAzek, bo tylko on ogarnia ten temat najlepiej. Poza tym mimo iż \\ dopuszczalne, to zbędne na rzecz pojedyńczego backslasha, to nie c++. A i tag wątku poprawiłem. - olesio 2013-07-30 22:51
Optymalizator powinien się zająć porównaniami do True czy False, zaś formatowanie mimo iż poprawne, to wcięcia jednoznakowe są mało czytelne, no i brak spacji przed i po operatorach oraz kolejnych argumentach utrudniają analizę; - furious programming 2013-07-31 10:41

Pozostało 580 znaków

2013-07-31 07:10

Rejestracja: 14 lat temu

Ostatnio: 2 dni temu

Lokalizacja: Gorlice

0

Dokładnie kod wygląda na poprawny jak wspomniał @olesio po co podwójny \ w Delphi to żaden znak specjalny ale inna rzecz mnie bardziej zastanawia bo ścieżka z podwójnym czy nie chyba przejdzie tylko czy masz poprawne połączenie bo jeżeli np. serwer działa w trybie pasywnym to trzeba przed Connect ustawić Passive:= True; Nie ma żadnego komunikatu błędu?


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 2x, ostatnio: kAzek, 2013-07-31 07:11
Podwójny \ przy szybkim teście z Memo i SaveToFile na Delphi 7 przeszedł ok. - olesio 2013-07-31 23:32

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0