Problem z odświeżaniem FTP

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

Problem z odświeżaniem FTP

Nowy postprzez Pitek » wtorek, 29 grudnia 2009, 20:00

Witam mam problem z funkcją aktualizacji w moim programie fragmentu kodu za to odpowiedzialny :
Kod: Zaznacz cały
void __fastcall TFormMsg::Button2Click(TObject *Sender)
{
ProgressBar1->Visible=true;
IdFTP2->Connect();
ProgressBar1->Max = IdFTP2->Size("setup.exe");
Application->ProcessMessages();
IdFTP2->Get("setup.exe", "setup.exe", true, false);
IdFTP2->Disconnect();
FormMsg->Close();
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::IdFTP2Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)
{
ProgressBar1->Position = AWorkCount;
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::IdFTP2WorkEnd(TObject *ASender, TWorkMode AWorkMode)
{
ProgressBar1->Position = ProgressBar1->Max;
ShellExecute(FormMsg->Handle, NULL , "setup.exe", "", "", SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------

1. Nie działa mi to :
Kod: Zaznacz cały
ProgressBar1->Max = IdFTP2->Size("setup.exe");

funkcja zwraca mi wartość (-1) a plik ma około 7266600 bajtów. Więc wartość Max komponentu PrograessBar ustawiłem właśnie na 7266600 i to jest ok ale jest to tylko obejście problemu i chciałbym wiedzieć czemu funkcja size zwraca (-1) i jak to poprawić.
2. Komponent pobiera plik ale zawiera on błąd i nie jest możliwe jego otwarcie w dodatku pobrany plik ma o 0.03 Mb więcej od pierwotnej wersji.
Więc mój kod po "obejściu" :

Kod: Zaznacz cały
void __fastcall TFormMsg::Button2Click(TObject *Sender)
{
ProgressBar1->Visible=true;
IdFTP2->Connect();
ProgressBar1->Max = 7295000;
Application->ProcessMessages();
IdFTP2->Get("setup.exe", "setup.exe", true, false);
IdFTP2->Disconnect();

FormMsg->Close();

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

void __fastcall TFormMsg::IdFTP2Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)

{
ProgressBar1->Position = AWorkCount;
Application->ProcessMessages();
}
//---------------------------------------------------------------------------


void __fastcall TFormMsg::IdFTP2WorkEnd(TObject *ASender, TWorkMode AWorkMode)
{
ProgressBar1->Position = ProgressBar1->Max;
ShellExecute(FormMsg->Handle, NULL , "setup.exe", "", "", SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------

Ale dalej nie wiem czemu plik jest pobrany źle.
Mam jeszcze pytanie po za tematem ale o IdFTP mianowicie w tym komponencie u mnie RS 2010 nie ma wartości RecvBufferSize i SendBufferSize które zostały opisane w poradniku na stronie czy są do niech jakieś alternatywne odniesienia ?
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Problem z odświeżaniem FTP

Nowy postprzez Pitek » czwartek, 31 grudnia 2009, 20:50

Bardzo proszę o pomoc czy ktoś wie coś na ten temat ??
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Problem z odświeżaniem FTP

Nowy postprzez Cyfrowy Baron » piątek, 1 stycznia 2010, 10:40

Wartość -1 jest zwracana tylko wtedy, gdy nie można pobrać rozmiaru pliku, co może być spowodowane tym, że nie odnaleziono pliku, lub serwer ftp nie zwraca takich informacji.

Sprawdziłem to w środowisku C++Builder z Indy 10.5.5 na serwerze ftp.republika.pl i działa poprawnie, u mnie wskazuje prawidłowy rozmiar pliku.

Przeprowadź dwa testy. Pierwszy na tym samym serwerze z innym plikiem, jeżeli zadziała to masz jakiś problem tylko z tym konkretnym plikiem. Drugi test sprawdź na innym serwerze, możesz założyć darmowe konto na serwerze republika.pl - jeżeli zadziała, to oznacza, że Twój serwer nie zwraca takich informacji.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Pitek
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z odświeżaniem FTP

Nowy postprzez Pitek » piątek, 1 stycznia 2010, 20:02

Dziękuję bardzo za pomoc, chodzi !
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana


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