permet de connaitre en permanence le nombre total de mail qui sont dans les différentes boites.
Cette exemple utilise le module POP3 Indy 9.00.17.
Petit es routines de cryptographie maison simple (utilisant des veux principe mais qui pourrait être utile pour certain débutants comme moi)
Conclusion :
pour télécharger Indy 9.00.17 allez à l'adresse suivante :
http://www.indyproject.org/download/Borland.iwp
La version actuelle tient compte des premieres remarques (Merci à JulioDelphi Particulièrement) .
Un petit plus , possibilité d'avoir un son à chaque détection du changement du nombre de Mail
----------------------------------------------------------------------
Interface
{ Immediate If }
{ IIF renvoyant un entier }
function IIF(ACondition: boolean; ATruePart, AFalsePart: integer): integer; overload;
{ IIF renvoyant un extended }
function IIF(ACondition: boolean; ATruePart, AFalsePart: Extended): Extended; overload;
{ IIF renvoyant une string }
function IIF(ACondition: boolean; ATruePart, AFalsePart: string): string; overload;
{ IIF renvoyant un objet }
function IIF(ACondition: boolean; ATruePart, AFalsePart: TObject): TObject; overload;
Implémentation
function IIF(ACondition: boolean; ATruePart, AFalsePart: integer): integer;
{ Immediate IF pour les entiers }
begin
if ACondition then
Result := ATruePart else
Result := AFalsePart;
end;
function IIF(ACondition: boolean; ATruePart, AFalsePart: Extended): Extended;
{ Immediate IF pour les flottant }
begin
if ACondition then
Result := ATruePart else
Result := AFalsePart;
end;
function IIF(ACondition: boolean; ATruePart, AFalsePart: string): string;
{ Immediate IF pour les chaînes }
begin
if ACondition then
Result := ATruePart else
Result := AFalsePart;
end;
function IIF(ACondition: boolean; ATruePart, AFalsePart: TObject): TObject;
{ Immediate IF pour les objets }
begin
if ACondition then
Result := ATruePart else
Result := AFalsePart;
end;
Utilisation des fonctions:
procedure TMyObject.TestIIF;
var idx: integer;
MyString: String;
begin
idx := 10; { Par exemple }
MyString := IIF(idx=0,'Zero','Différent de Zero');
end;
est équivalent à
procedure TMyObject.TestIIF;
var idx: integer;
MyString: String;
begin
idx := 10; { Par exemple }
if idx=0 then MyString = 'Zero' else MyString = 'Différent de Zéro';
end;
Merci delphi.developpez.com =)
begin
if Value then IFF:=Tre
else IFF:=Fls;
end;
#TYPE# est une déclinaison: remplacer par integer pour renvoyer des entiers, string pour des chaînes... Ainsi, voici un exemple avec les booleans:
function IFF_bool(Value:boolean; Fls, Tre : boolean):boolean;
begin
if Value then IFF_bool:=Tre
else IFF_bool:=Fls;
end;
Par contre la fonction << IIF >> n'est pas reconnue par ma version de delphi, Quelle est l'unité qui le contient merci
quelques petites remarques constructives de correction/optimisation de code :
1) Eviter ça :
H := ''; U := ''; P := '';
L1.Caption := H; L2.Caption := U;
L1.Visible := True; L2.Visible := True;
c'est pas lisible, vaut mieux ecrire 7 lignes, l'exe n'en sera pas plus gras.
2) je te propose la fonction Format() pour ça :
- if reg.ValueExists('H' + inttostr(M)) then H := Reg.ReadString('H' + inttostr(M));
qui donne ça :
- if reg.ValuesExists(format('H%d',[M])) then H := Reg.ReadString(format('H%d',[M]));
et aussi ça :
- Messag.Caption := inttostr(Nb_Mail) + 'Messages';
qui donne ça :
- Messag.Caption := Format('%d messages',[NB_MAIL]);
>> avec ton code, si NB_MAIL vaut "3", alors j'obtiendrais :
"3Messages" avec MAJUSCULE + texte collé !!
et aussi ça qui peut etre combiné avec IIF() :
- if NB_Mail = 1 then Notif.szTip := '1 message'
else begin
H := Inttostr(Nb_Mail) + ' messages';
qui peut donner ça :
- H :iif(NB_Mail 1,'1 message',format('%d messages',[NB_Mail]));
3) NOMME TES COMPOS ! je vois des timer1, timer2, timer3 je ne sais pas a quoi ils servent !! je devrais en avoir un petite idée grâce a son nom !
4) Notif.szTip := '0 Messages'; pas de "S" puisque "0" !
4bis) "Voullez" avec un seul L
5) A quoi sert le timer3 qui ne fonctionne qu'une seule fois 1/2 seconde apres le lancement de l'appli ? pourquoi ne pas déclarer une procedure tout simplement ! et si tu veux attendre 500ms, mets un sleep(500) ... mais bon explique moi
6) Il y a moyen de jouer avec les sender (en case ... of) pour les Moins1, plus2, plus1 etc
Infos sur les IIF :
{ Immediate If }
{ IIF renvoyant un entier }
function IIF(ACondition: boolean; ATruePart, AFalsePart: integer): integer; overload;
{ IIF renvoyant un extended }
function IIF(ACondition: boolean; ATruePart, AFalsePart: Extended): Extended; overload;
{ IIF renvoyant une string }
function IIF(ACondition: boolean; ATruePart, AFalsePart: string): string; overload;
{ IIF renvoyant un objet }
function IIF(ACondition: boolean; ATruePart, AFalsePart: TObject): TObject; overload;
Infos sur format :
%d = Decimal (integer)
%e = Scientific
%f = Fixed
%g = General
%m = Money
%n = Number (floating)
%p = Pointer
%s = String
%u = Unsigned decimal
%x = Hexadecimal
Je n'ai pas encore compilé la source, mais a part ces détails, je trouve le code bien fait ! je regarderais un peu plus ce soir ou demain. voila pour ma premiere contribution a ta source ! Bienvenue sur C-S !
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.