ELCouz
Messages postés135Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention25 juillet 2008
-
9 avril 2008 à 19:21
ELCouz
Messages postés135Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention25 juillet 2008
-
13 avril 2008 à 13:38
Bonjour,
Je ne travail pas tres souvent avec des applications consoles en delphi.
J'aimerais savoir comment on fait pour acceder a une procedure dun composant?
comment on fait pour acceder a la proprieter OnWork , OnWorkBegin ,OnWorkEnd du composant idFTP , normalement je passe par un VCL c'est pour sa ? Le VCL dans une form application lui est cree AVANT ... console app cest durant le code ... dynamiquement quoi.... il faudrais que jmet où la section OnWork.... et comment on la call dans ce cas si ?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 12 avril 2008 à 23:43
Bonjour ElCouz,
J'espère que je n'arrive pas trop tard...et que le dessert est à venir
Pour pouvoir exploiter les évènements d'un composant, on a souvent besoin de s'appuyer sur un composant. Evidemment, quend on dispose d'une fiche, c'est tellement facile qu'on le fait sans même réfléchir.
Mais quand il s'agit d'une appli console, alors là, ça change tout et ta question est extrêmement intéressante. Merci de l'avoir posée.
Donc, les événement ont besoin d'être affectés à une méthode, déclarée comme "procedure of object". Mais quand on n'a pas d'objet sous la main, comment on fait ?
La réponse qui vient immédiatement à l'esprit est "on n'a qu'à en fabriquer un !".
Oui, mais...
STOP, assez parlé et regardons le bout de code qui suit :
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils, IdComponent, IdFtp;
type
//Déclaration d'une classe bidon avec une méthode dont la signature est celle //attendue par le composant TIdFtp et son évènement OnStatus
TDummy = class
procedure ftpStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: string);
end;
var
Dummy: TDummy;
ftp: TIdFTP;
monfichierpath, nomdefichier: TFileName;
// Code de l'évènement à gérer
procedure TDummy.ftpStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: string);
begin
Writeln(AStatusText);
end;
begin
ftp := TIdFTP.Create(nil);
ftp.Host := 'ftp.bobcat.com';
ftp.Username := 'bob';
ftp.Password := 'bob';
Dummy := TDummy.Create;
//Affectation du pointeur de méthode à notre évènement
ftp.OnStatus := Dummy.ftpStatus;
ftp.Connect;
ftp.Put(monfichierpath, nomdefichier);
ftp.Disconnect;
ftp.Free;
Dummy.Free;
end.
C'était si simple que ça ? Ben voui
May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
ELCouz
Messages postés135Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention25 juillet 2008 13 avril 2008 à 03:19
Wow ! merci , non il n'est pas trop tard , j'avais toujours pas trouver ma reponse j'ai meme chercher dans des bouqins mais il n'abordais pas vraiment en profondeur le sujet sur les app. console ...D'ailleur es-ce que quelque travail encore avec sa aujourdhui ?
ELCouz
Messages postés135Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention25 juillet 2008 13 avril 2008 à 03:22
Ah oui question bete
TDummy c'est inventé (donc je pourrais le remplacer par TSalut) ou ca provient de Delphi et il faut utiliser cette classe pour assigner une evenement en application console?
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 13 avril 2008 à 08:46
Bonjour Laurent,
Je suis heureux pour plusieurs raisons :
1- je ne suis pas arrivé après la bataille
2- j'ai droit à des remerciements, ce qui se fait parfois rare ici
Rassure-toi, la classe TDummy est purement inventée et n'a absolument aucune dépendance. Dummy (ou Foo) désigne souvent dans les codes un objet, une variable ou une routine qui n'a pour rôle que de permettre une action ponctuelle. Tupeux donc la remplacer par TSalut ou toute autre chose, du moment que ce n'est pas une classe déjà déclarée dans les unités utilisées dans ton code (ici SysUtils, IdComponent, IdFtp).
Enfin, si la grande majorité des applications sont des applications GUI (Graphical User Interface), les applications console sont encore très utilisées pour certains traitements où l'intervention humaine n'est pas nécessaire.
Je ne suis donc pas étonné que tu n'aies pas trouvé beaucoup de litérature sur les applications consoles vu qu'elles sont plutôt utilisées pour un usage professionnel de nos jours.
Bonne continuation.
May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.