Jan za pomocą TFTPSend wysłać plik na serwer tak by można było śledzić postęp wysyłania ?
TFTPsend.DSock.OnStatus
Ok, ale jeżeli mam TFTPSend to tam nie ma funkcji typu "Put". Synapse ma funkcje FtpPutFile i mi właśnie chodzi o to jak przechwycić ten proces gdy wysała się plik przy pomocy tej funkcji
odrobina wysiłku naprawdę cie nie zabije ...
procedure TfrmMain.aaa;
var
FTPSend: TFTPSend;
begin
FTPSend := TFTPSend.Create;
ProgressBar.Max := FileSize;
ProgressBar.Value := 0;
FTPSend.DSock.OnStatus := OnStatus;
try
FTPSend.UserName := 'User';
FTPSend.Password := 'Pass';
FTPSend.TargetHost := 'IP';
FTPSend.TargetPort := 'Port';
if not FTPSend.Login then
Exit;
FTPSend.DirectFileName := 'LocalFile';
FTPSend.DirectFile:=True;
FTPSend.StoreFile('FileName', False);
FTPSend.Logout;
finally
FTPSend.Free;
end;
end;
procedure TfrmMain.OnStatus(Sender: TObject; Reason: THookSocketReason;
const Value: string);
begin
if Reason = HR_WriteCount then
begin
ProgressBar.Value := ProgressBar.Value + StrToInt(Value);
end;
end;
thx ;-)
Witam czy mógłbyś wysłać ten komponent na jakiegoś www.speedyshare.com
google + synapse - czy to sprawia komuś jakiś kłopot?
naprawdę nie mogę znaleźć a gdy już znajdę stronę probiernia link jest pusty .
proszę udostępnijcie komponent.
Linki do biblioteki synapse:
Stronka: http://synapse.ararat.cz/doku.php/download
Synapse: http://synapse.ararat.cz/files/synasnap.zip
Dema: http://synapse.ararat.cz/files/synademo.zip
Komponent (nie używałem, więc nie wiem na ile jest ciekawy):
http://visualsynapse.sourceforge.net/
dziękuje Madmike , teraz mam kolejny problem
otóż dodałem kod wysyłania do butona , a kod on status wkleiłem jako procedurę , teraz podcas kompilacji wyskakuje mi błąd "undeclared identifier: OnStatus" i teraz nie wiem muszę jeszcze coś dodatkowo zadeklarować w programie ? prosił bym o podpowiedz.
Plik wysyła się bardzo fajnie ale gdy dodam procedurę
onStatus
wyskakuje mi powyższy błąd kompilacji , co powinienem zrobić bo wszystko zaczęło działać ?
do kodu dodałem :
type
THookSocketReason = (
HR_ResolvingBegin,
HR_ResolvingEnd,
HR_SocketCreate,
HR_SocketClose,
HR_Bind,
HR_Connect,
HR_CanRead,
HR_CanWrite,
HR_Listen,
HR_Accept,
HR_ReadCount,
HR_WriteCount,
HR_Wait,
HR_Error
);
THookOnStatus = procedure(Sender: TObject; Reason: THookSocketReason;
const Value: string) of object;
TForm1 = class(TForm)
[...]
i
procedure OnStatus(Sender: TObject; Reason: THookSocketReason; const Value: string) ;
oraz
procedure TForm1.OnStatus(Sender: TObject; Reason: THookSocketReason;
const Value: string);
begin
if Reason = HR_WriteCount then
begin
ProgressBar.Position := ProgressBar.Position + StrToInt(Value);
end;
end;
na końcu
var
FTPSend: TFTPSend;
begin
FTPSend := TFTPSend.Create;
ProgressBar.Max := 159744;
ProgressBar.Position := 0;
FTPSend.DSock.OnStatus := OnStatus;
caption:='wysyłam';
try
FTPSend.UserName := '***';
FTPSend.Password := '***';
FTPSend.TargetHost := '***';
FTPSend.TargetPort := '21';
if not FTPSend.Login then
Exit;
FTPSend.DirectFileName := '/testy.jpg';
FTPSend.DirectFile:=True;
FTPSend.StoreFile('C:\testy.jpg', False);
FTPSend.Logout;
finally
FTPSend.Free;
end;
end;
przy prubie kompilacji wyrzuca błąd którego nie rozumiem :
Czy robię coś źle ? proszę o pomoc lub jakieś wskazówki.
Pozdrawiam
Masz napisane jak wół, że Twój typ THookSocketReason nie podoba się kompilatorowi, bo oczekuje typu o tej nazwie, ale pochodzącego z unitu blcksock. Zamiast zabawiać się w powielanie typów - dodaj tamtego unita do uses i pozamiatane.