[ Pobierz całość w formacie PDF ]
.Je¿eli wybrana pozycja reprezentuje plik, inicjuje siê jego œci¹ganie, pouprzednim ustaleniu docelowej nazwy, pod któr¹ ma zostaæ zapisany.Œci¹gniêcie pliku – lub pobranie zawartoœci katalogu – reprezentowanego przezwybran¹ pozycjê listy nie by³oby niczym niezwyk³ym, gdyby nie fakt, i¿ pozycjelisty s¹ wyodrêbnionymi nazwami plików (katalogów), tymczasem metoda DownLoad()wymaga okreœlenia pe³nej œcie¿ki dostêpu (tak przynajmniej jest bezpieczniej,bowiem nazwy „relatywne” odnoszone s¹ do bie¿¹cego katalogu).Utworzeniekompletnej œcie¿ki dla danej pozycji listy realizowane jest przez metodêGetPath() formularza o treœci prezentowanej na wydruku 9.8.Deklaracjê tejmetody (w postaci AnsiString __fastcall GetPath();) nale¿y dopisaæ dopublicznej czêœci deklaracji formularza w pliku Unit1.h.Wydruk 9.8.Tworzenie kompletnej œcie¿ki dla wybranej pozycji listyAnsiString __fastcall TForm1::GetPath(){TTreeNode *Base, *Temp;TStringList *TempList = new TStringList();int i;AnsiString ToReturn;Base = MyTree->Selected;TempList->Add(Base->Text);Temp = Base->Parent;while(Temp){TempList->Add(Temp->Text);Temp = Temp->Parent;}for(i=TempList->Count-1;i>-1;i--){ToReturn += "/" + TempList->Strings[i];}return ToReturn;}Rozpoczynaj¹c od wybranej pozycji, pod¹¿a siê tu „w górê” hierarchii wêz³Ã³w –nazwa ka¿dego napotkanego wêz³a stanowi kolejny cz³on œcie¿ki, oddzielanyznakiem „/”.Zamykanie sesji oraz przesy³anie plikówZakoñczenie po³¹czenia z serwerem FTP nastêpuje w wyniku klikniêcia przycisku„Stop”:void __fastcall TForm1::StopButtonClick(TObject *Sender){MyFtp->Disconnect();StartButton->Enabled = true;StopButton->Enabled = false;}Po zamkniêciu po³¹czenia za pomoc¹ metody Disconnect() nastêpuje zablokowanieprzycisku „Stop” i odblokowanie przycisku „Start”.Przesy³anie pliku (upload) jest czynnoœci¹ zgo³a nieskomplikowan¹ i nastêpuje wwyniku klikniêcia przycisku „Przeœlij”:void __fastcall TForm1::UploadButtonClick(TObject *Sender){if(OpenDialog1->Execute()){MyFtp->Upload(OpenDialog1->FileName,ExtractFileName(OpenDialog1->FileName));}}Plik do przes³ania wybierany jest tutaj za pomoc¹ standardowego dialoguotwarcia pliku.Jego specyfikacja znajduje siê pod w³aœciwoœci¹ FileName tego¿dialogu.Zwróæ uwagê, i¿ plik zapisywany jest na serwerze pod swoj¹ oryginaln¹nazw¹ w bie¿¹cym katalogu – funkcja ExtractFileName() usuwa ze specyfikacjipliku ewentualn¹ œcie¿kê dostêpu.PodsumowanieRozdzia³ ten stanowi kolejne œwiadectwo niezwyk³ej u¿ytecznoœci narzêdzia typuRAD, jakim jest C++Builder; skomplikowane poniek¹d technologie internetowedostêpne s¹ dla programisty niemal na wyci¹gniêcie rêki, a to za spraw¹komponentów udostêpniaj¹cych funkcje podstawowych protoko³Ã³w komunikacyjnych.Prezentowane tu projekty ze zrozumia³ych wzglêdów okrojone s¹ do wersjiminimalnych, mog¹ jednak byæ bez przeszkód rozbudowywane i byæ mo¿e u¿ywanejako sk³adniki aplikacji bardziej skomplikowanych
[ Pobierz całość w formacie PDF ]