CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Klient FTP

Klient FTP

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Klient FTP

Nowy postprzez TNTeener » wtorek, 28 lutego 2012, 13:47

Cześć. Robię i mam problem z kodemKlienta FTP.Otóż kiedy klikam przycisk od połączenia wyskakuje błąd z żadną treścią.
Oto kod:
KOD cpp:     UKRYJ  
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit10.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm10 *Form10;
//---------------------------------------------------------------------------
__fastcall TForm10::TForm10(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm10::Button1Click(TObject *Sender)
{
 IdFTP1->Connect();
 IdFTP1->Host = Edit3->Text;
 IdFTP1->Username = Edit1->Text;
 IdFTP1->Password = Edit2->Text;
 IdFTP1->Login();

}

//---------------------------------------------------------------------------
void __fastcall TForm10::IdFTP1Connected(TObject *Sender)
{
 Edit1->Enabled = false;
 Edit2->Enabled = false;
 Edit3->Enabled = false;
 Label3->Enabled = false;
 Label2->Enabled = false;
 Label1->Enabled = false;
 Button1->Caption = "Połączono";
 Button1->Enabled = false;

}
//---------------------------------------------------------------------------

Proszę też o dalsze rady.
Mój Kompilator to C++ Builder XE2.
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Re: Klient FTP

Nowy postprzez Cyfrowy Baron » wtorek, 28 lutego 2012, 17:34

Czy właściwość AutoLogin obiektu TIdFTP. ustawiłeś na false? Jeżeli nie to zrób to!

► patrz serwis: Cyfrowy Baron dział: porady -> sieć - internet -> Ściąganie i wysyłanie plików poprzez protokół FTP.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Klient FTP

Nowy postprzez TNTeener » środa, 29 lutego 2012, 09:52

Dalej wyskakuje ten sam błąd z przyciskiem od logowania. Na FileZilli ten sam serwer mi śmiga.
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Re: Klient FTP

Nowy postprzez polymorphism » środa, 29 lutego 2012, 10:48

KOD cpp:     UKRYJ  
 IdFTP1->Connect();
 IdFTP1->Host = Edit3->Text;
...

Co Ty, najpierw się łączysz, a później ustawiasz adres serwera (hosta), do którego właśnie starałeś się połączyć?! Chyba sam przyznasz, że to nielogiczne.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
TNTeener
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Klient FTP

Nowy postprzez TNTeener » środa, 29 lutego 2012, 14:22

Ufff.. Dzięki że błąd znalazłeś. Prawda nie logiczne :P Pisałem na pałe i potem nie zauważyłem.
Teraz inny problem kiedy się loguje z dopiskiem "admin@" na początku to mi pokazuje to:
Obrazek

#EDIT:
Tak samo się dzieje kiedy wpisuje losowe hasło i login.
Jak wpisuje z tym dopiskiem w Filezilli to mi śmiga a tu, w ogóle.
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Re: Klient FTP

Nowy postprzez polymorphism » środa, 29 lutego 2012, 15:50

Mnie to na błąd nie wygląda, raczej na jakieś info, które dostajesz zaraz po zalogowaniu na serwer FTP.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Klient FTP

Nowy postprzez Cyfrowy Baron » środa, 29 lutego 2012, 17:41

TNTeener napisał(a):Teraz inny problem kiedy się loguje z dopiskiem "admin@" na początku


Po co dodajesz ten dopisek do nazwy użytkownika. Nie jestem w tym zorientowany, ale jeżeli u siebie w dowolnym programie do komunikacji przez FTP dopiszę coś takiego do nazwy użytkownika to nie zaloguję się na serwer, gdyż nazwa użytkownika będzie nieprawidłowa.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Klient FTP

Nowy postprzez TNTeener » środa, 29 lutego 2012, 17:47

Cyfrowy Baron napisał(a):Po co dodajesz ten dopisek do nazwy użytkownika. Nie jestem w tym zorientowany, ale jeżeli u siebie w dowolnym programie do komunikacji przez FTP dopiszę coś takiego do nazwy użytkownika to nie zaloguję się na serwer, gdyż nazwa użytkownika będzie nieprawidłowa.

Tak się loguje na filezilli i mi działa jak tak się loguje, a bez tego ani rusz na file zilli.

polymorphism napisał(a):Mnie to na błąd nie wygląda, raczej na jakieś info, które dostajesz zaraz po zalogowaniu na serwer FTP.

Faktycznie informacja :D
Takie coś się pokazuje i na filezilli.

A teraz następne pytanie:
Ustawiłem w kodzie w "IdFTP1Connected" że blokuje nie które przyciski i odblokowuje przycisk do wylogowywania.
Cały kod Connected jest taki:
KOD cpp:     UKRYJ  
//---------------------------------------------------------------------------
void __fastcall TForm10::IdFTP1Connected(TObject *Sender)
{
 Edit1->Enabled = false;
 Edit2->Enabled = false;
 Edit3->Enabled = false;
 Label3->Enabled = false;
 Label2->Enabled = false;
 Label1->Enabled = false;
 Button1->Caption = "Zalogowano";
 Button1->Enabled = false;
 IdFTP1->List(NULL, "*.*", true);
 ListBox1->Items = IdFTP1->ListResult;
 Button2->Visible = true;
}
//---------------------------------------------------------------------------

Noi ustawione że pokazuje liste plików w ListBox1 ale tego nie robi :(
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Re: Klient FTP

Nowy postprzez polymorphism » środa, 29 lutego 2012, 19:13

KOD cpp:     UKRYJ  
IdFTP1->List("*.*", true);
ListBox1->Items->AddStrings(IdFTP1->ListResult);

Może zacząłbyś czytać dokumentację, co?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Klient FTP

Nowy postprzez Cyfrowy Baron » środa, 29 lutego 2012, 20:30

Funkcja List komponentu TIdFTP może być użyta na trzy sposoby:

KOD cpp:     UKRYJ  
List();
List( UnicodeString ASpecifier, bool ADetails );
List( TStrings ADest, nicodeString ASpecifier, bool ADetails );


Może Tobie nie działa, bo nie ustawiłeś najpierw katalogu z którego chcesz wyliczać pliki?! By zmienić katalog posłuż się funkcją ChangeDir( nazwa katalogu ), nie możesz jednak od razu wejść do dowolnego katalogu, musisz po kolei wywoływać tą funkcję raz za razem, aż dotrzesz do właściwego katalogu.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Klient FTP

Nowy postprzez TNTeener » środa, 29 lutego 2012, 21:45

Noi znowu tkwi błąd. Jak podam sam host to jakoś loguje, a jak się zaloguje to nie listuje katalogów i plików nawet gdy ustawiłem funkcje ChangeDir.
Dodam że nie mam dostępu do dokumentacji bo jak ją włączam to każe reinstalować dokumentacje :P
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Re: Klient FTP

Nowy postprzez Cyfrowy Baron » środa, 29 lutego 2012, 22:08

TNTeener napisał(a): nawet gdy ustawiłem funkcje ChangeDir.


Co to znaczy, że ustawiasz tą funkcję? Masz wejść do jakiegoś katalogu, który zawiera pliki.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Klient FTP

Nowy postprzez TNTeener » czwartek, 1 marca 2012, 09:13

Chce wchodzić do głównego katalogu :D
KOD cpp:     UKRYJ  
IdFTP1->ChangeDir("/:");
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Re: Klient FTP

Nowy postprzez polymorphism » czwartek, 1 marca 2012, 11:18

A co ten dwukropek tam robi? W FTP ścieżki są unixowe, czyli główny katalog to po prostu slash /. Następna sprawa to to, że jeśli chcesz wiedzieć, dlaczego coś nie działa, powinieneś sprawdzać kod, który serwer wysyła w odpowiedzi na komendę (w tym przypadku wylistowania plików):
KOD cpp:     UKRYJ  
IdFTP1->List("*.", true);

int code = IdFTP1->LastCmdResult->NumericCode;
if(code >= 200 && code < 300) // jeśli dobrze pamiętam, kody 2xx oznaczają operacje zakończoną sukcesem
{
        ListBox1->Items->AddStrings(IdFTP1->ListResult);
}
else
{
        // BŁĄD
        String errormsg = IdFTP1->LastCmdResult->FormattedReply->Text;
        Application->MessageBox(errormsg, L"Error!", MB_OK);
}
 

p.s. kod pisany na sucho (nie używam buildera i nie znam INDY), więc mogą być jakieś drobne błędy.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Klient FTP

Nowy postprzez TNTeener » czwartek, 1 marca 2012, 13:42

Skończyłem program. Dałem sobie spokój z listą i postanowiłem zrobić wszystko na editach i dialogach.
Temat do zamknięcia.
Avatar użytkownika
TNTeener
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): wtorek, 28 lutego 2012, 13:41
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Windows XP/Vista/7
Kompilator: C++ Builder XE2
    Windows VistaChrome

Następna strona

  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości