VERY SIMPLE FTP SENDER

Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 - 10 janv. 2007 à 14:13
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009 - 11 janv. 2007 à 15:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41046-very-simple-ftp-sender

cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
11 janv. 2007 à 15:40
Bah, VERY SIMPLE...
si tu as une autre proposition de nom...
sinon j'utilise le protocole FTP pour envoyer des fichiers.
donc par definition c'est un clientFTP...
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
11 janv. 2007 à 15:28
Moi oui j'ai compris : par contre je ne suis pas sur que tu es compris ce qu'est un client FTP ;) (FTP ?? Voir ton titre ;)).

Bon le débat est clos.
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
11 janv. 2007 à 14:06
Necessite la JVCL point.

Francky23012301 : t'es sur d'avoir compris a qui servait mon soft ?

foxi : merci des conseils...
tu aurais pu remarqué que "abracadabra" ne servait a rien !
Sinon je n'utilise jamais with...do... et j'aime bien format (plus clair).

Le programme fonctionne en situation réel.
Nouvelle version disponible.
cs_abdousoft Messages postés 100 Date d'inscription mardi 3 août 2004 Statut Membre Dernière intervention 5 novembre 2007
11 janv. 2007 à 10:37
salut
Votre Source manque de composants JVCL,
c'est pour ca je te conseille d'utilise des composants delphi
standard ou bien placer les composants coresspondant dans un fichier ZIP.

Bonne chance!
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
10 janv. 2007 à 17:59
Dommage en effet d'utiliser la JVCL plutot que la VCL standard, ça aurait été plus interressant ... et plus "diffusable".

par contre, pourquoi utiliser le type File (dans fmfile) plutot que le TFileStream qui permet plus de choses ...

c'est une erreur aussi d'utiliser Format dans le OnCreate principal comme tu le fait.
pour la concatenation de chaine il vaux mieux faire :

'Server : '+hnam+':'+port+' - L/P : '+logn+' / ****** - Thread : '+inttostr(maxthread);

jvscrolltext1.Items.Add(f.ffile+' sended.');

pour une seule convertion Int > Str mieux vaut utiliser inttostr que format... par contre, a partir de 2 ou plus on peu utiliser format les yeux fermés.
il faut par contre ne pas utiliser format pour la concatenation de chaine ... c'est trop lents par rapport a sA+sB+sC.

ensuite, fait attention aux fuites memoires!!! quand on crée un objet on doit le liberer immediatement aprés ou a la fin du programme et au moins utiliser les balise TRY ... FINALLY...

procedure TForm1.FormCreate(Sender: TObject);
begin
with TIniFile.Create(ChangeFileExt(paramstr(0),'.ini')) do begin
TRY
host := ReadString('server','host','');
hnam := Readstring('server','name','');
port := Readstring('server','port','21');
maxthread := ReadInteger('thread','max',4);
logn := Readstring('login','name','anonymous');
logp := Readstring('login','pass','anonymous');
FINALLY
Free;
END;
end;
label1.Caption := format('Server : %s:%s - L/P : %s / ****** - Thread : %d',[hnam,port,logn,maxthread]);

add;
nbftp := 0;
abracadabra := 0;
end;


le numero de port devrait etre stocké avec Read/WriteInteger
a ce moment la on peu utiliser Format :
format('Server : '+hnam+':%d - L/P : '+logn+' / ****** - Thread : %d',[port,maxthread]);

si on est respectueux des protocols on devrait noter les parametres FTP de cette façon :

Login:Password@FTPHostName:FTPHostPort/FTPPathTarget

soit :
'Serveur : '+Logn+':******@'+hnam+':%d' qui serait un ordre plus que judicieux pour ne pas perdre les utilisateurs.


et enfin, ne pas oublier l'utilisation de WITH ... DO pour eviter les gros pavé repetitif :

with JVScrollText1.Items do begin
Clear;
Add(co);
Add('licence : freeware');
Add('no com, gov or mil usage');
Add('');
Add('Host : '+host);
end;
JvScrollText1.Active:=true;
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
10 janv. 2007 à 15:59
Arff pardon : ouvre mon soft et l'utilise sans se prendre la tete. J'avais pas compris ca au départ d'ou ma dernière remarque : lol
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
10 janv. 2007 à 15:50
Sans vouloir te vexer,je vais te contredire :

1)Ton soft s'inscrit dans les 15 clients FTP déjà posté sur CS, avec beaucoup de fonctionnalités en moins. De plus on ne peut pas meme pas choisir le fichier que l'on veut envoyer.

2)Sur la douzaine de commandes spécifiques au protocole FTP, ton source n'en reprend que deux.

3)Fichier Ini : on ne saisit ni le User ni le Password : on ne peut utiliser que celui par défaut. Ton fichier Ini ne sert à rien : tu pouvais utiliser cela directement

IdFTP1.Host:=
IdFTP1.Port:=
IdFTP1.Username:=
IdFTP1.Password:=

4)Sur DelphiFr on n'utlise pas le JVCL et on n'a pas le choix que de l'avoir, pour le compiler.

De ce fait cet source n'est pas compilable : du reste je n'ai pas pu le faire.

5)Si tu postes ici c'est pour etre soumis à la critique : si cela te gène, abstient toi de poster. C'est les règles du jeu.
cs_foxz Messages postés 101 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 25 février 2009
10 janv. 2007 à 15:01
Mon soft n'est pas un n°ieme client FTP.

(A) doit envoyer régulièrement un/des fichiers à (B).
(B) distribue mon soft a (A) en configurant le .ini à ces propres parametres.
(A) ouvre mon soft et l'utilise sans se prendre la tete.

Meuh? est-ce claire ? :-)
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
10 janv. 2007 à 14:13
Salut,

Travaillant actuellement sur le sujet, je te cache pas que je suis un peu décu :

*Non paramètrage du mot de passe : Il existe un composant Indy Super : le TidUserManager

De memoire

Procedure Add_User(AUsername,APassword : string);
Begin
With IdUserManager1.Accounts do
Add.Username:=AUsername;
Add.Password:=Password;
End;

L'avantage de ce composant c'est que tu peux gérer les droits suivant l'utilisateur.

Autre remarque : un client ou serveur FTP ne fait pas que transférer des fichies : on peut tout faire avec via la commande SendCmd(). Et oui pas besoin de TidTCP.

Ensuite pour télécharger ou envoyer un fichier sur un serveur il est primordiale d'avoir acces à l'arborescence du PC distant.

Ensuite quel dommage : des commandes simples, comme supprimer ou créer un répertoire, supprimer un fichier, renommer un fichier, récupérer un fichier ect ect ne sont pas présente. Pourtant c'est simple

Bon allez je suis sur que tu vas arranger tout cela ;)
Rejoignez-nous