Rozroznianie plikow od folderow -IdFTP

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

Rozroznianie plikow od folderow -IdFTP

Nowy postprzez Bishamoth » wtorek, 16 czerwca 2009, 14:29

Witam
Znalazlem to:
Funkcja List służy do wyliczania plików w katalogu. Pobiera trzy argumenty, pierwszy argument to wskaźnik na obiekt typu TStrings, czyli na listę, drugi argument określa maskę wyszukiwania plików, czyli możemy tutaj określić czy chcemy wyszukiwać wszystkie pliki, tylko pliki, konkretny plik itd.
Jeżeli podamy jako wartość pustą ("") to wyliczone zostaną wszystkie pliki i katalogi w przeszukiwanym katalogu.
Jeżeli podamy jako wartość gwiazdkę ("*") to wyliczone zostaną wszystkie pliki i katalogi w przeszukiwanym katalogu oraz pliki we wszystkich katalogach
Jeżeli podamy jako wartość dwie gwiazdki rozdzielone kropką ("*.*") to wyliczone zostaną tylko wszystkie pliki przeszukiwanym katalogu.
Jeżeli podamy jako wartość dwie gwiazdki kropkę i rozszerzenie pliku ("*.html") to wyliczone zostaną tylko pliki z zadanym rozszerzeniem przeszukiwanym katalogu.
Jeżeli podamy jako wartość nazwę pliku z rozszerzeniem ("index.html") to wyliczony zostanie tylko plik o takiej nazwie w przeszukiwanym katalogu.

Trzeci argument określa typ wyliczania zawartości folderu false - bez szczegółow, true - ze szczegółami

Nie uzywam zadnej maski, lecz chce aby po dwukrotnym kliknieciu np w plik zaczelo sie sciaganie, a po klinieciu na folder, zostal on otworzony. Jak to zrobic?
Avatar użytkownika
Bishamoth
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): niedziela, 1 marca 2009, 22:51
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder 6
Gadu Gadu: 0
    NieznanyNieznana

Re: Rozroznianie plikow od folderow -IdFTP

Nowy postprzez Cyfrowy Baron » wtorek, 16 czerwca 2009, 16:43

A to zależy dużo od tego, jak wyświetlasz listę plików i folderów.
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
    NieznanyNieznana

Re: Rozroznianie plikow od folderow -IdFTP

Nowy postprzez Bishamoth » wtorek, 16 czerwca 2009, 22:14

Wyswietlam je za pomoca:
Kod: Zaznacz cały
IdFTP1->List(ListBox1->Items, "", false);


Chcialbym aby bylo to rozpoznawane po podwojnym kliknieciu na co kolwiek co sie znajduje w Items komponentu ListBox.
Avatar użytkownika
Bishamoth
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): niedziela, 1 marca 2009, 22:51
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder 6
Gadu Gadu: 0
    NieznanyNieznana

Re: Rozroznianie plikow od folderow -IdFTP

Nowy postprzez Cyfrowy Baron » wtorek, 16 czerwca 2009, 23:14

No i tutaj jesteś w kropce, bo i skąd taka lista jak TStrings (ListBox->Items) zawierająca po prostu listę zmiennych typu String, "miałaby wiedzieć" że aten element to plik, a tamten to folder.
Po kliknięciu w listę program musi sprawdzić czy dany element to plik czy folder, można by się sugerować tym, że plik ma rozszerzenie a folder ni, ale przecież zarówno foldery mogą zawierać kropki co by sugerowało, że to plik, jak i pliki nie muszą zawierać rozszerzenia i mogłyby być wzięte za foldery.

Należałby tutaj stworzyć dodatkową listę przechowującą to samo co listBox plus informację czy wyliczony element to plik czy folder, fukcja List obiektu IdFTP1 zwraca takie informacje, więc w jednej liście np. typu TStringList przechowujesz nazwy plików i folderów oraz info czy jest to plik czy folder, a w drugiej liście np. ListBox wyświetlasz tylko nazwy plików i folderów. Po wybraniu elementu na ListBox odszukujesz takiej nazwy w drugiej liście rezydującej w pamięci i sprawdzasz czy masz do czynienia z plikiem czy z folderem, w zależności od wyniku podejmujesz odpowiednia akcję. Proste...!
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
    NieznanyNieznana

Re: Rozroznianie plikow od folderow -IdFTP

Nowy postprzez Bishamoth » poniedziaÅ‚ek, 12 października 2009, 23:49

Poczytalem o obsludze wyjatkow, i probowalem to na wlasny sposob zrobic:
Kod: Zaznacz cały
void __fastcall TForm1::ListBox1DblClick(TObject *Sender)
{
try
   {
   Dir = ListBox1->Items->Strings[ListBox1->ItemIndex];
   IdFTP1->ChangeDir(Dir);
   IdFTP1->List(ListBox1->Items, "", false);
   }
   catch(Exception &exception)
        {
        AnsiString LocalFile;
        Dir = ListBox1->Items->Strings[ListBox1->ItemIndex];

        SaveDialog1->Execute();
        LocalFile=SaveDialog1->FileName;
        IdFTP1->Get(Dir,LocalFile);
        }
}

Ale chyba nie pyklo, gdyz najpierw przelatuje przez kod pokolei, czyli najpierw chce otworzyc folder, a dopiero po tym, jak wywali blad, i kliknie sie OK, zaczyna pobieranie.
Obslugi warunkow sie jeszcze nie uczylem. Moze ktos wie jak to by mialo wygladac?
Avatar użytkownika
Bishamoth
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): niedziela, 1 marca 2009, 22:51
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder 6
Gadu Gadu: 0
    NieznanyNieznana

Re: Rozroznianie plikow od folderow -IdFTP

Nowy postprzez Witold » wtorek, 13 października 2009, 12:00

Bishamoth napisał(a):czyli najpierw chce otworzyc folder, a dopiero po tym, jak wywali blad, i kliknie sie OK, zaczyna pobieranie.

Nie tak chciałeś ? Czy gdy uruchomisz program poza IDE też wywala błąd ? W opcjach IDE możesz ustawić czy debugger ma się zatrzymywać gdy wystąpi wyjątek (zatrzymuje się nawet wtedy gdy łapiesz ten wyjątek). W Bcb6 ta opcja jest w menu Tools\Debugger Options\Language Exceptions.
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana

Re: Rozroznianie plikow od folderow -IdFTP

Nowy postprzez Bishamoth » wtorek, 13 października 2009, 17:02

Witold napisał(a):Nie tak chciałeś ?

No wlasnie niezbyt, gdyz w praktyce nic to nie zmienilo. Tak samo bylo przed dodaniem wyjatku.
Witold napisał(a):Czy gdy uruchomisz program poza IDE też wywala błąd ?

Wlasnie, ze nie wywala bledu, i wszystko dziala tak jak nalezy.
Witold napisał(a):W opcjach IDE możesz ustawić czy debugger ma się zatrzymywać gdy wystąpi wyjątek (zatrzymuje się nawet wtedy gdy łapiesz ten wyjątek). W Bcb6 ta opcja jest w menu Tools\Debugger Options\Language Exceptions.

Wlasnie spojrzalem, co tam sie znajduje, i nasuwa mi sie pytanie: co tam wpisac... :roll:
Avatar użytkownika
Bishamoth
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): niedziela, 1 marca 2009, 22:51
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder 6
Gadu Gadu: 0
    NieznanyNieznana

Re: Rozroznianie plikow od folderow -IdFTP

Nowy postprzez Witold » wtorek, 13 października 2009, 18:17

Bishamoth napisał(a):Wlasnie spojrzalem, co tam sie znajduje, i nasuwa mi sie pytanie: co tam wpisac... :roll:


Albo Przycisk [Add…] potem treść yyyy z komunikatu wyjątku: "Project xxxx raised exception class yyyyy with message 'zzzzzz'."

Możesz też odznaczyć [x] Stop on Delphi Exceptions. Powinno zadziałać , indy jest napisana w Delphi. Tylko potem już debugger nie zatrzyma się na żadnym wyjątku z delphi.
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 14
Kompilator: bcb6, Turbo C++ Explorer
    NieznanyNieznana


  • 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 1 gość

cron