Witam ! Napisałem program który pobiera z rejestru dane a następnie zapisuje je do pliku.
I teraz problem jak zrobić aby owy plik został wysłany na ustalone przeze mnie wartości, niemam pojęcia jak to zrobić za pomoca Indy ! :(
Znacie może inne rozwiązania ?
michuuu napisał(a)
aby owy plik został wysłany na ustalone przeze mnie wartości
Eeee ? ;> Chyba chodzi Ci o ustalony server ? ;>
Otóż to
michuuu napisał(a)
Znacie może inne rozwiązania ?
A Indy nie moze byc ? ;>
IdFTP1.Connect;
IdFTP1.Put('c:/plik.thx','plik.txt',true);
IdFTP1.Disconnect;
a możesz pełniejszy kod bo na pewno nie jest to wszystko a na stronie nie mogę znaleźć nigdzie dokładnych informacji
Właściwie to musisz ustawić jeszcze tylko "Host", "Username" i "Password" w IdFTP. I później ten kodzik co Ci podałem. Pierwszym argumentem funkcji put jest ścieżka do lokalnego pliku, drugim ścieżka na serverze ... i to tyle co Ci potrzeba. ;)
Ok postanowiłem nie poddawać się i podczas kompilacji kodu mam owy problem :
"Field Form1.IdFTP1 does not have a coressponding component. Remove the declaration?"
Co ty na to ?
To bym musiał kawałek kodu zobaczyć.
tu masz artykuł na temat wysyłania plików na FTP
http://4programmers.net/Delphi/INDY#id-Klient-FTP
Pozdrawiam
unit thpsver;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdExplicitTLSClientServerBase, IdFTP;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
StaticText2: TStaticText;
IdFTP1: TIdFTP;
procedure Button1Click(Sender: TObject);
procedure IdFTP1AfterClientLogin(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Registry;
procedure TForm1.Button1Click(Sender: TObject);
var Rejestr:TRegistry;
TF : TextFile; // format pliku
Reg : TRegistry;
localfile, remotefile : string;
Value : String;
begin
AssignFile(TF, 'C:\ver.txt'); // stworz plik .txt
ReWrite(TF);
Reg := TRegistry.Create;
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=(HKEY_LOCAL_MACHINE);
Rejestr.OpenKey('SOFTWARE\Activision\THPS2',False);
Label1.Caption:=Rejestr.ReadString('version');
{ zapisz odczytane z pliku dane }
Writeln(TF, 'Versja :');
Writeln(TF, '"' +Label1.Caption+ '"');
Writeln(TF, '.');
Reg.Free; // zamknij rejestr
CloseFile(TF); // zamknij plik
end;
procedure TForm1.IdFTP1AfterClientLogin(Sender: TObject);
begin
IdFTP1.Put('C:\ver.txt', 'ver.txt');
end;
end.
Po co Ci te "IdExplicitTLSClientServerBase" ? :> I gdzie masz fragment kodu z łączeniem się z serverem ?
połącz się w ten sposób:
procedure TForm1.button1Click(Sender: TObject);
begin
IdFTP1.Username := 'kamerok.yoyo.pl'; //nazwa użytkownika
IdFTP1.Password := 'haslo'; //hasło do FTP
IdFTP1.Host := 'kamerok.yoyo.pl'; // host
begin
if not IdFTP1.Connected then
begin
IdFTP1.Connect();
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var Rejestr:TRegistry;
TF : TextFile; // format pliku
Reg : TRegistry;
localfile, remotefile : string;
Value : String;
begin
AssignFile(TF, 'C:\ver.txt'); // stworz plik .txt
ReWrite(TF);
Reg := TRegistry.Create;
Rejestr:=TRegistry.Create;
Rejestr.RootKey:=(HKEY_LOCAL_MACHINE);
Rejestr.OpenKey('SOFTWARE\Activision\THPS2',False);
Label1.Caption:=Rejestr.ReadString('ver');
{ zapisz odczytane z pliku dane }
Writeln(TF, 'Version:');
Writeln(TF, '"' +Label1.Caption+ '"');
Writeln(TF, '.');
Reg.Free; // zamknij rejestr
CloseFile(TF); // zamknij plik
IdFTP1.Username := 'rastaban'; //nazwa użytkownika
IdFTP1.Password := 'xxxxx'; //hasło do FTP
IdFTP1.Host := 'rastaban.webd.pl'; // host
begin
if not IdFTP1.Connected then
begin
IdFTP1.Connect();
end;
end;
begin
IdFTP1.Put('C:\ver.txt', 'ver.txt');
Program uruchomił się, Windows prosił o odblokowanie jednak sam program "zamulił" i cały efekt tego czy gdzieś jest błąd ?
Zrób łączenie się oraz wysyłanie pliku w dwóch oddzielnych wątkach , było wielokrotnie
(do tego celu możesz użyć np. " IdThreadComponent1 ")
Ok postanowiłem postawić swój FTP, FTP łączy się w logach widze że podłączam Się do niego jednak program podaje mi owe info
Project Project1.exe raised exception class EIdReplyRFCError with message 'Syntax error or unknown command'.
<pomocy> ``` begin IdFTP1.Put('C:\ver.txt', 'ver.txt'); end; ```Jeżeli usunę tą część program działa :( Lecz nie wysyła Pliku